Функция ranges::sort
Функция ranges::sort сортирует элементы
диапазона. В первом параметре мы передаем
диапазон, который нужно отсортировать, а во
втором необязательном параметре - компаратор,
задающий правило сортировки. Также можно
передать проекцию - функцию, применяемую к
каждому элементу перед сравнением.
По умолчанию элементы сортируются по
возрастанию с помощью оператора <.
Функция изменяет исходный диапазон и не
возвращает результат.
Синтаксис
ranges::sort(range, [comp], [proj])
Пример
Давайте отсортируем вектор из чисел по возрастанию:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
using namespace std::ranges;
int main()
{
vector<int> res = {5, 2, 4, 1, 3};
sort(res);
for (int num : res) {
cout << num << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте отсортируем вектор из чисел по убыванию, передав компаратор:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
using namespace std::ranges;
int main()
{
vector<int> res = {5, 2, 4, 1, 3};
sort(res, greater<int>());
for (int num : res) {
cout << num << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
5 4 3 2 1
Пример
Давайте отсортируем вектор из строк по длине, используя проекцию:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
using namespace std::ranges;
int main()
{
vector<string> res = {"abcde", "ab", "abc", "a", "abcd"};
sort(res, {}, &string::length);
for (const string& str : res) {
cout << str << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
"a" "ab" "abc" "abcd" "abcde"
Смотрите также
-
функция
ranges::find,
которая ищет элемент в диапазоне -
функция
ranges::count,
которая считает элементы в диапазоне -
функция
ranges::copy,
которая копирует элементы диапазона -
функция
ranges::for_each,
которая применяет функцию к элементам диапазона