简体   繁体   English

如何正确实现自动迭代器

[英]How to implement auto iterators correctly

I decided to replace我决定更换

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

with

for (auto &messageIterator : message)

and it works.它有效。 Then I decided to apply similar approach to this loop然后我决定对这个循环应用类似的方法

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

and my code looks like this but it doesn't work.我的代码看起来像这样,但它不起作用。

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

How do I fix it?我如何解决它?

With range-v3, you might do:使用 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;   
}

Demo演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM