在C ++中,是否可以在单个循环中依次迭代多个迭代器?

我知道,如果我使用实现iterator接口(提供begin()end()函数的c ++容器),则可以使用这样的for循环对其进行迭代: / p>

for (auto element : container) {
    process(element);
}

如果我有两个容器类型相同的实例,我可以编写这样的代码

for (auto element : container1) {
    process(element);
}
for (auto element : container2) {
    process(element);
}

但是,这导致了重复的代码。我正在寻找一种组合两个容器的方法,以便可以一次遍历它们(即让for循环遍历第一个容器,然后继续遍历第二个容器)。像这样:

for (auto element : container1 + container2) {
    process(element);
}

我知道,如果碰巧是矢量,我可以使用container1.insert(container1.end(),container2.begin(),container2.end());之类的东西将它们串联起来,但是我希望能够更普遍地在一行中做到这一点,而无需修改任何一个容器。

xiaomao315452522 回答:在C ++中,是否可以在单个循环中依次迭代多个迭代器?

不使用某种迭代器适配器,您只需创建一个指向所有容器的指针/引用数组,然后对其进行循环,运行一个内部循环以迭代当前容器的元素:

auto* containers[] = {&container1,&container2};
for (auto *container : containers) {
    for (auto &element : *container) {
        process(element);
    }
}
本文链接:https://www.f2er.com/3140577.html

大家都在问