Re[2]: Однообразность в STL
От: Olivia Россия  
Дата: 06.12.04 19:37
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, _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, упорядоченные по определенному критерию (не ключ).
Заранее благодарна.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.