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