如何在两个迭代器的中间找到迭代器?

时间:2011-12-29 02:38:00

标签: c++

我正在尝试将我的quicksort实现转换为可以与向量之外的其他容器一起使用的模板。

最初我使用索引来查找中间索引,例如(first + last) / 2。如何找到两个迭代器的中间部分?

4 个答案:

答案 0 :(得分:15)

std::distance可以尽可能有效地测量两个迭代器之间的距离。

std::advance可以尽可能高效地增加迭代器。

我仍然不想快速排序链表,但是:)

答案 1 :(得分:5)

答案 2 :(得分:1)

这样的事情怎么样?

bool isMovingFirst = true;
while(first != last) {
  if(isMovingFirst) {
    ++first;
  } else {
    --last;
  }
  isMovingFirst = !isMovingFirst;
}

答案 3 :(得分:0)

要查找中间迭代器,您应该使用:

first + (last - first) / 2