如何使用基于循环迭代器的范围?

问题描述 投票:2回答:1

我有一个插入排序算法的代码,我想知道是否有一个基于for循环的范围相当于我正在使用的for循环。

与常规STL容器迭代器相比,我对基于范围的循环迭代器的工作方式感到困惑。只是明显地取代for(auto it:x)显然不起作用。

主要是,我的问题是我如何取消引用基于范围的迭代器来获取相应的数组值。这是我的插入排序代码:


for (auto it = x.begin(); it != x.end();it++)
 {
        auto insertloc = std::upper_bound(x.begin(), it, *it);

        std::rotate(insertloc, it, it + 1);
}

这段代码工作正常,但我只是想知道我是否可以用基于范围的循环替换for循环。

c++ loops pointers auto
1个回答
3
投票

我想用基于范围的循环替换for循环。

这不适用于您的用例。当你只需要通过解除引用迭代器得到的对象的值时,range-for循环就可以工作。由于您在循环中使用迭代器,因此它不适合您的情况。没有标准机制可以从值中获取迭代器。

© www.soinside.com 2019 - 2024. All rights reserved.