我正在尝试对 std::list 进行双循环以对每对元素进行操作。但是,我在初始化第二个迭代器时遇到了一些问题。我想写的代码是:
for(std::list<int>::iterator i = l.begin(); i != l.end(); ++i) {
for(std::list<int>::iterator j = i+1; j != l.end(); ++j) {
...
}
}
这行不通,因为列表迭代器不是随机访问的,所以您不能 +1。但是我在寻找一个简洁的替代品时遇到了一些麻烦;编译器似乎对 std::list<int>::iterator j(i)++;
不太满意我对此抱有希望。实现我想要的似乎我将不得不有一些笨拙的额外增量,这不适合 for 循环的结构。
有明显的替代方案(例如,使用 vector !)但在我看来,应该有一些相当巧妙的方法来做到这一点,但我目前还没有看到。
在此先感谢您的帮助:)
最佳答案
for(std::list<int>::iterator i = l.begin(); i != l.end(); ++i) {
std::list<int>::iterator j = i;
for(std::advance(j, 1); j != l.end(); ++j) {
...
}
}
关于c++ - 如何在增量循环中构造 std::list 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2269546/