我正在尝试在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) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为列表迭代器不是随机访问,所以你不能做+1.但是我在寻找一个简洁的选择方面遇到了一些麻烦; 编译器对std::list<int>::iterator j(i)++;我有一些希望似乎并不高兴.实现我想要的东西似乎我将不得不有一些尴尬的额外增量,这将不太适合for循环的结构.
有明显的替代方案(例如使用矢量!)但在我看来应该有一些合理利落的方式来做这个,我现在还没有看到.
在此先感谢任何帮助:)
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) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
怎么样:
for (std::list<int>::iterator i = l.begin(); i != l.end(); ++i) {
for (std::list<int>::iterator j = i; ++j != l.end(); ) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15041 次 |
| 最近记录: |