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

Lou*_*uis 11 c++

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

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

Sti*_*sis 15

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

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

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

  • @DietrichEpp:是的,但有一个原因是`std :: sort`特别需要随机访问迭代器. (2认同)
  • 不断地在列表中上下走动效率很低.您花费大部分时间访问"node-> next"和"node-> prev",几乎没有时间实际执行排序.在性能方面,您可能会通过将数据复制到矢量并在那里进行排序来做得更好. (2认同)