Сортировать любой контейнерC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сортировать любой контейнер

Сообщение Anonymous »

У меня есть функция, которая принимает контейнер STD и работает на нем. Где -то в процессе необходимо отсортировать элементы контейнеров. Теперь сортировка std :: vector и std :: list вызвать головную боль. Как я бы объединил процесс?

Вот пример, который дает обе ошибки: < /p>
#include
#include [*]
#include

template void foo(C& container){
// this one works for std::vector
std::sort(container.begin(), container.end(), [](auto&a, auto&b){return a
Ошибки: < /p>
  • std::vector не имеет функции сортировки:
main.cpp: In instantiation of ‘void foo(C&) [with C = std::vector]’:
main.cpp:18:8: required from here
18 | foo(b);
| ~~~^~~
main.cpp:10:15: error: ‘class std::vector’ has no member named ‘sort’
10 | container.sort();
| ~~~~~~~~~~^~~~
< /code>
  • list::iterator нет - оператор для расчета расстояния.
In file included from /usr/include/c++/14/algorithm:61,
from main.cpp:3:
/usr/include/c++/14/bits/stl_algo.h: In instantiation of ‘constexpr void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = _List_iterator; _Compare = __gnu_cxx::__ops::_Iter_comp_iter]’:
/usr/include/c++/14/bits/stl_algo.h:4804:18: required from ‘constexpr void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = _List_iterator; _Compare = foo(std::__cxx11::list&)::]’
4804 | std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.cpp:7:14: required from ‘void foo(C&) [with C = std::__cxx11::list]’
7 | std::sort(container.begin(), container.end(), [](auto&a, auto&b){return a

Подробнее здесь: https://stackoverflow.com/questions/796 ... -container
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»