(不确定这是否是正确的任务) 我正在写一个与经典排序相关的stl风格的算法。 原型为:如何使用end()迭代器扩展范围
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);
....
}
,但它不正确的我,因为,最初 它得到的范围内工作一样: 矢量V; Algo(v.begin(),v.end());然而,在内部,在递归调用中,子范围不包含end()元素。
这种情况下的典型技术是什么?
你是算法内部不一致。你在被排除的末尾调用它,但是你可以递归地调用它,并且结尾被包含和排除。 – chris 2015-03-31 17:31:28
实际上问题是 - 如何为内部呼叫添加end()元素 – amigo421 2015-03-31 17:36:09
如果内部呼叫的合约比用户呼叫的合约不同,则需要不同的功能。 – chris 2015-03-31 17:40:29