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

时间:2016-01-30 14:22:14

标签: c++ c++11

#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)等。

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

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

你想要一些通常被称为“拉链”的东西。 Boost有一个实现,正如你在这些答案中看到的那样: