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

时间:2019-04-27 05:28:58

标签: c++ loops pointers auto

我有用于插入排序算法的代码,我想知道是否存在与我正在使用的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循环替换为基于范围的循环。

1 个答案:

答案 0 :(得分:3)

  

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

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