如何使用基于范围的for循环迭代器?
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 循环。
I want to replace that for loop with a range based one.
这不适用于您的用例。当您只需要通过取消引用迭代器获得的对象的值时,range-for 循环起作用。它不适用于您的情况,因为您在循环中使用迭代器。没有标准机制可让您从值中获取迭代器。
我有插入排序算法的这段代码,我想知道是否有一个基于范围的 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 循环。
I want to replace that for loop with a range based one.
这不适用于您的用例。当您只需要通过取消引用迭代器获得的对象的值时,range-for 循环起作用。它不适用于您的情况,因为您在循环中使用迭代器。没有标准机制可让您从值中获取迭代器。