如何正确实现自动迭代器

问题描述 投票:0回答:1

我决定替换

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)

我该如何解决?

c++ auto
1个回答
2
投票

使用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

© www.soinside.com 2019 - 2024. All rights reserved.