C ++标准库提供严格的线性序列容器,线性序列容器,关联容器。
std::sort()
可用于各种容器。但为什么只提供列表排序。 std::list::sort()
?
答案 0 :(得分:12)
std::sort
仅适用于随机访问容器。标准库中唯一可以排序的非随机访问容器是std::list
。
std::sort
肯定不适用于关联容器。这有什么意义呢?关联容器可以通过其键的值访问,而不是按位置访问。
正如迈克所指出的,C ++ 11也有std::forward_list
,这也不例外,它也有自己的排序功能。
答案 1 :(得分:6)
std::sort
仅适用于随机访问迭代器,但std::list
仅提供biderectional迭代器。因为它不能与std::sort
一起使用,所以它需要自己的实现,对于双向链表也可能更加优化。
同样,您无法将std::map
或std::set
迭代器与std::sort
一起使用。但是对于这些你无论如何都不需要它,因为它们总是被分类。
作为旁注,还有std::map::find
之类。这些确实不是必需的,因为您可以使用std::find
的所有迭代器。但成员函数版本为各个容器提供了优化算法,这比std::find
的线性复杂度更有效。