gpt4 book ai didi

C++ 迭代器 : How to find the index for a heapsort

转载 作者:行者123 更新时间:2023-11-28 07:08:51 25 4
gpt4 key购买 nike

假设我有一个 vector 要排序:

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

我该如何解决这个问题并将迭代器移动到正确的位置?有没有办法找到迭代器的索引?

最佳答案

您可以使用 std::distance .例如:

auto index = std::distance(v.begin(), iter);

引用:

If it is a random-access iterator, the function uses operator- to calculate this. Otherwise, the function uses the increase operator (operator++) repeatedly.

关于C++ 迭代器 : How to find the index for a heapsort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21344746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com