C++ sort函数问题
来源:百度知道 编辑:UC知道 时间:2024/05/31 15:39:31
STL中的sort参数要求是RandomAccessIterator,可是为什么我对一个vector<int> v; 的排序时这样写:sort(&v[0], &v[5])也可以呢?
请问3楼的“Iterator的原型就是对象的引用”这话对么?
请问3楼的“Iterator的原型就是对象的引用”这话对么?
楼上有些不懂就不要误人子弟。
你首先要把RandomAccessItertor的概念(concept)搞清楚,STL里的迭代器大体如下:
Input ->
Forward -> Bidirectional ->Random -> Reverse
Output ->
它们支持的操作方法不同,比如Forward就不能加上一个常数后跳到另一个位置上去,只能不断地++。
指针既可以++也可以--,还可以加上一个常量,它自然是一个RandomAccessIterator,所以自然能用在sort上。
具体细节参考<C++ Standard Library>第7章
vector内部数据是连续存储的。
&v[0],下标操作符取得v的第一个元素,&操作符取得该元素的地址,
所以&v[0]是第一个元素的指针。
所以这和普通指针遍历内置数组是相同的。
呵呵,都行吧,不过一般还是习惯sort(v.begin(),v.end());
Iterator的原型就是对象的引用
你把v.begin()换成&v[0]是一样的
有标准写法 就不要用不标准的写法 很多时候没有哪么多为啥