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

К>Здравствуйте, _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>());
К>}
К>

Можно и так, но ИМХО здесь "чисто конкретно" паттерн стратегия (policy) в шаблонном варианте надо применять.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.