【发布时间】:2023-03-19 01:08:01
【问题描述】:
假设我有一个数字向量:
std::vector< int > v{ 1, 2, 3, 4 };
我想遍历向量并一次操作两个;也就是我要操作:
-
(1,2), -
(2,3),和 -
(3,4)。
我知道有一种方法可以使用 Eric Neibler 的 range-v3 库(预定在 C++20 中)来执行此操作,但我不记得命令的确切顺序。
我可以使用迭代器来做到这一点
for( auto begin = v.begin(); begin != (v.end()-1); begin++ ){
// Do something with *begin and *(begin+1)
}
使用 range-v3 库会使它更加优雅和可读。我只是不记得命令是什么。
【问题讨论】:
-
@Mureinik 这可以解决问题,但比我发布(然后更新)的迭代器示例要复杂得多。
-
我认为您正在寻找的 range-v3 术语是
sliding -
@chris 是的
sliding是术语。把它变成一个答案,我会给你功劳。