(不确定这是正确的任务)我正在编写一个与经典排序相关的stl风格的算法 . 原型是:
template<typename RAIter>
void Algo(RAIter first, RAIter last) {
....
size_t size = std::distance(first, last);
RAIter midIter =first;
std::advance(midIter, size / 2 - 1);
Algo(first, midIter);
Algo(midIter + 1, last);
....
}
但它对我来说无法正常工作,因为它最初得到的范围如下:vector v; Algo(v.begin(),v.end());但是,在内部,在递归调用中,子范围不包含end()元素 .
这种情况下的典型技术是什么?
1 回答
我提出两种选择 .
last
. 在你的情况下,它可以这样做:last
的范围: