【发布时间】:2014-02-16 03:50:12
【问题描述】:
假设我有一个要排序的向量:
std::vector v{9, 8, 0, 2, 7, 3, 2, 1}
假设我想从第三个元素(索引 2)开始排序直到结束,所以我有一个迭代器指向 0 开始和过去 1 结束。如果我使用索引并将当前元素的索引传递给函数,要找到“0”的左孩子,我将使用 2*index+1。
设“iter”为指向 0、索引 2 处的迭代器。如下:
iter+1
将移动迭代器,使 *iter 现在等于 2。但是,我无法将迭代器移动到左子节点:
2*iter+1
如何解决这个问题并将迭代器移动到正确的位置?有没有办法找到迭代器的索引?
【问题讨论】:
-
是我还是我们之前得到了同样的问题?
-
@EdHeal:你没记错。 This is a duplicate. 似乎很少有人在发布问题之前使用 SO 搜索。