gxi*_*xiv 0 c++ loops for-loop stl stdvector
想象一下我有一个有序的 std::vectorA = {x1, x2, ..., xn}并且我想对每个后续的项目对执行操作,例如f(x1, x2); f(x2, x3); ... f(xn-1, xn); f(xn, x1)。
我可以像平常一样迭代,同时跟踪前一项:
for (auto x : A) {
...
f(previous_x, x);
previous_x = x;
}
f(previous_x, first_x);
Run Code Online (Sandbox Code Playgroud)
但是有没有更好的方法来迭代这个向量呢?该语言中是否有可以简化此操作的功能?
尝试了提供的解决方案。它有效,但很想知道是否有更干净、更简洁的方法。
给你
std::vector<int> v = { 1, 2, 3, 4, 5 };
for (std::vector<int>::size_type i = 0, n = std::size( v ); i < n; i++)
{
std::cout << v[i] + v[( i + 1 ) % n] << ' ';
}
std::cout << '\n';
Run Code Online (Sandbox Code Playgroud)
该代码片段的输出是
3 5 7 9 6
Run Code Online (Sandbox Code Playgroud)
您可以使用类似的方法。
在 for 循环之前,您可以检查向量是否至少包含两个元素。
| 归档时间: |
|
| 查看次数: |
702 次 |
| 最近记录: |