C++ 排序算法在C+中的工作+;STL

C++ 排序算法在C+中的工作+;STL,c++,stl,C++,Stl,从Sort(begin,end)的用法来看,似乎只需指定容器的开始和结束索引,函数就可以对容器进行排序。但是我的问题是sort函数如何获取容器的类型 std::sort(myvector.begin(), myvector.end()); 根据上面的代码,我假设起始和结束索引是send。向量类型和向量名称是如何推导出来的。该函数与和迭代器中的许多其他函数一样。myvector.begin()/end()返回类型“containertype::iterator” 至于sort()如何工作,它实际

从Sort(begin,end)的用法来看,似乎只需指定容器的开始和结束索引,函数就可以对容器进行排序。但是我的问题是sort函数如何获取容器的类型

std::sort(myvector.begin(), myvector.end());
根据上面的代码,我假设起始和结束索引是send。向量类型和向量名称是如何推导出来的。

该函数与
和迭代器中的许多其他函数一样。

myvector.begin()/end()返回类型“containertype::iterator”


至于sort()如何工作,它实际上并不关心底层容器的类型,只要容器中的两个元素是可比较的(该元素存在
less()
,或者您指定自己的比较函数)。

算法不关心容器的类型,只关心迭代器的类型。它需要随机访问迭代器,这就是为什么不能将
std::sort
std::list
一起使用的原因。对不起,我不理解。如果不关心容器类型,请您再详细说明一下排序函数如何比较值。@krish_oza,请阅读关于模板的内容,然后阅读我在回答中添加的链接。一切都会很清楚。“可比”的要求肯定不是唯一的。@Jeffrey还有什么?迭代器是RandomAccessIterator还是同一容器中的两个迭代器?请看我回答中的链接(特别是
ValueSwappable
RandomAccessIterator
要求)。
template< class RandomIt >
void sort( RandomIt first, RandomIt last );