Назад к вопросам
Junior — Middle
97
Можно ли использовать функцию std::sort для сортировки стандартного списка в C++?
Ответ от нейросети
sobes.tech AI
Функция std::sort из стандартной библиотеки C++ требует, чтобы контейнер предоставлял случайный доступ к элементам (Random Access Iterator). Стандартный std::list реализован как двусвязный список и предоставляет только двунаправленные итераторы (Bidirectional Iterator), поэтому std::sort для него использовать нельзя.
Для сортировки std::list существует встроенный метод list::sort(), который реализует сортировку, подходящую для двусвязного списка. Пример:
#include <list>
#include <iostream>
int main() {
std::list<int> lst = {4, 2, 5, 1, 3};
lst.sort(); // сортировка списка
for (int n : lst) {
std::cout << n << ' ';
}
return 0;
}
Если нужно отсортировать элементы std::list с помощью std::sort, можно скопировать их в вектор, отсортировать и затем вернуть обратно, но это менее эффективно.