如何在 C++11 中的一个循环中迭代两个向量

How to iterate two vectors in one loop in C++11?

本文关键字:两个 向量 循环 迭代 一个 C++11      更新时间:2023-10-16
#include <vector>
using namespace std;
class A
{
public:
    A() = default;
    void Add(int n)
    {
        m_count += n;
    }
private:
    int m_count;
};
int main()
{
    vector<int> coll_1 = {1, 2, 3};
    vector<A> coll_2(3);
    // Is there a more elegant way to do the "for loop"?
    for (int i = 0; i < 3; ++i)
    {
        coll_2[i].Add(coll_1[i]);
    }
    return 0;
}

我知道有很多新的方法(即C++11 口味)来完成 for 循环,例如 for_eachtransformfor (auto& elem : coll) 等。

但是,我找不到一种优雅的方式来完成上述工作。

有什么建议吗?

你想要一些通常被称为"zip"的东西。Boost有一个实现,正如你在这些答案中看到的:

  • c++11 的序列 zip 函数?
  • 如何使用BOOST_FOREACH同时迭代两个向量?