Использование и оптимизация std::sort в C++
std::sort - это алгоритм сортировки, который входит в стандартную библиотеку языка C++. Он позволяет отсортировать последовательность элементов любого типа по возрастанию или убыванию.
Синтаксис функции std::sort выглядит следующим образом:
cpp
template< class RandomIt >
void sort( RandomIt first, RandomIt last );
template< class RandomIt, class Compare >
void sort( RandomIt first, RandomIt last, Compare comp );
Первый параметр функции sort - это итератор на начало последовательности, которую нужно отсортировать. Второй параметр - итератор на конец последовательности (за последним элементом).
Также второй параметр, можно задать в следующей форме: `sort(arr, arr+n)`, где arr и n - массив и его размер соответственно.
Второй вариант функции, sort сравнивает с помощью функции comp элементы. comp - это функция, которая принимает два элемента и возвращает true, если первый элемент меньше второго, и false в противном случае.
Примеры использования функции sort
Для сортировки целочисленного массива можно использовать такой код:
cpp
#include
#include
int main()
{
int arr[] = { 3, 2, 5, 1, 4 };
int n = sizeof(arr) / sizeof(arr[0]);
std::sort(arr, arr + n);
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
return 0;
}
Для сортировки вектора строк можно написать такой код:
cpp
#include
#include
#include
#include
int main()
{
std::vector vec = { "red", "blue", "green", "yellow" };
std::sort(vec.begin(), vec.end());
for (const auto& el : vec) {
std::cout << el << " ";
}
return 0;
}
Наконец, вот пример сортировки пользовательского класса `Person` по возрасту:
cpp
#include
#include
#include
#include
class Person {
public:
std::string name;
int age;
bool operator<(const Person& other) const {
return age < other.age;
}
};
int main()
{
std::vector vec = { {"Anna", 28}, {"John", 23}, {"Mary", 35}, {"Tim", 31} };
std::sort(vec.begin(), vec.end());
for (const auto& el : vec) {
std::cout << el.name << " " << el.age << std::endl;
}
return 0;
}