我正在寻找与gi normal mode命令相反的东西:我想在最后一次插入的开始而不是在结尾处进入插入模式.我可能在文档中遗漏了一些内容,但我甚至找不到要跳转的标记,否则我会自己创建映射.
我想选择在运行时迭代容器的方向,如下面的示例代码所示:
#include <iostream>
#include <vector>
void iterate(bool forward, std::vector<int> v) {
auto start = v.begin();
auto end = v.end();
if (!forward) {
start = v.rbegin(); // this doesn't
end = v.rend(); // work
}
for (auto it = start; it != end; ++it) {
std::cout << *it << " -> " << *std::next(it) << std::endl;
}
std::cout << std::endl;
}
int main() {
std::vector<int> v{1, 2, 3, 4, 5};
iterate(true, v);
iterate(false, v);
}
Run Code Online (Sandbox Code Playgroud)
如何在运行时更改迭代器方向,而不复制 for 循环?
想象一下循环是一个相当复杂的算法,您不想复制它以避免未来的维护问题。请注意,我需要访问循环体中的 std::next/std::previous 元素。