C ++ STL中排序算法的研究

时间:2014-01-11 03:00:24

标签: c++ stl

从Sort(开始,结束)的使用看来,通过仅指定容器的开始和结束索引,该函数可以对容器进行排序。但我的问题是sort函数如何获得容器的类型。

std::sort(myvector.begin(), myvector.end());

从上面的代码我假设发送起始和结束索引。为什么推导出矢量类型和矢量名称。

2 个答案:

答案 0 :(得分:7)

<algorithm>中的许多其他人一样,函数std::sort并不关心容器类型,因为它适用于 concepts

具体来说,该功能定义为:

template< class RandomIt >
void sort( RandomIt first, RandomIt last );

如您所见,模板用于表达ValueSwappableRandomAccessIterator迭代器的概念。

答案 1 :(得分:1)

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

关于sort()如何工作,它实际上并不关心底层容器类型,只要容器中的两个元素具有可比性(该元素存在less<type>(),或者您指定你自己的比较功能)。