繁体   English   中英

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

[英]How to use the range based for loop iterator?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM