c++循环中的模迭代器
C++ modulo iterator in loop
我是否可以写这个for
循环
vector<int> vec{1,2,3,4,5,6};
for (int i=0; i<vec.size(); ++i)
float result = vec[i]-vec[(i+1)%vec.size()];//Subtract vec[0] from vec[5] in last iteration.
在带有迭代器的版本中?因此,像这样:
vector<int> vec{1,2,3,4,5,6};
for (vector<int>::iterator it=vec.begin(); it!=vec.end(); ++it)
float result = *it - *((it+1)%vec.size());
您可以使用三元?:
操作符,根据当前it
迭代器是否指向结束前的元素,选择begin
或it + 1
:
for (auto it = vec.begin(); it != vec.end(); ++it) {
float result = *it - *((it + 1 == vec.end()) ? vec.begin() : it + 1);
}
现场演示
如果我要那样做的话,我想我会写
for (auto i1 = vec.end() - 1, i2 = vec.begin(); i2 != vec.end(); i1 = i2++) {
result = *i1 - *i2;
}
相关文章:
- 对于set上的循环-获取next元素迭代器
- 将多个 for 循环组合成单个迭代器
- 使用一个 for 循环如何迭代和测试迭代器值?
- 转到基于范围的 for 循环中的下一个迭代器
- C++:返回一个基于范围 for 循环迭代器,其中包含继承对象
- 在分配和发布递增循环迭代器时C++无限循环(gcc 错误?
- 具有迭代器和自定义步长的循环结束条件
- 映射中循环的迭代器
- 在向量中使用迭代器循环
- C++ 迭代器循环与索引循环
- 使用相同的迭代器循环遍历两个 std::vector
- 我可以用cout而不是迭代器循环打印STL映射吗?
- 迭代器与非迭代器循环,不同的输出,C++
- 将迭代器循环调用end()多次
- 用于 STL 可迭代对象的迭代器循环的宏
- c++中通过迭代器循环遍历数组
- 嵌套迭代器循环,为什么迭代器是相等的?——c++
- 在多线程程序中使用迭代器循环hash_map
- 迭代器循环不计算最后一项
- 如何访问C++列表迭代器循环中的"previous"元素?