如何正确实现自动迭代器

How to implement auto iterators correctly

本文关键字:迭代器 实现 何正确      更新时间:2023-10-16

我决定替换

for (auto messageIterator = message.begin(); messageIterator != message.end(); ++messageIterator)

for (auto &messageIterator : message)

它有效。然后我决定对这个循环应用类似的方法

for (auto alphabetIterator = alphabet.begin(), rotorIterator = rotor.begin(); alphabetIterator != alphabet.end(), rotorIterator != rotor.end(); ++alphabetIterator, ++rotorIterator)

我的代码看起来像这样,但它不起作用。

for (auto &alphabetIterator : alphabet, &rotorIterator : rotor)

我该如何解决?

使用 range-v3,您可以执行以下操作:

std::vector<int> vi{1, 2, 3};
std::vector<std::string> vs{"one", "two", "three"};
for (const auto& [i, s] : ranges::view::zip(vi, vs)) {
std::cout << i << " " << s << std::endl;   
}

演示