Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, _nn_, Вы писали:
К><>
К>std::sort это — изначально — разновидность быстрой сортировки контейнеров с произвольным доступом (массивы, std::vector).
К>std::list::sort использует алгоритм сортировки двухсвязных списков.
К>std::set/map/multiset/multimap вообще сортировать нельзя.
К>Для контейнеров с медленным произвольным доступом (по forward iterator'у) можно написать разновидность быстрой сортировки. Но вроде бы ни в одной версии STL этого не сделали.
К>В принципе, можно сделать функцию-диспетчера, которая различала бы тип контейнера и выполняла ту или иную сортировку.
К>К>template<class V, class A, class P>
К>void sort_container(std::vector<V,A>& cont, P pred)
К>{
К> std::sort(cont.begin(), cont.end(), pred);
К>}
К>template<class V, class A, class P>
К>void sort_container(std::list<V,A>& cont, P pred)
К>{
К> cont.sort(pred);
К>}
К>template<class C>
К>void sort_container(C& cont)
К>{
К> sort_container(cont, std::less<typename C::value_type>());
К>}
К>
У меня вопрос в таком случае. Расскажите, пожалуйста, почему std::multimap нельзя сортировать, ведь алгоритм сортировки применим ко всем контейнерам.
И подскажите, плизз, как обойти эту проблему: у меня задание вывести данные из multimap, упорядоченные по определенному критерию (не ключ).
Заранее благодарна.