创建第3个向量,同时循环其他2个向量

时间:2015-02-23 18:48:58

标签: c++11 for-loop vector

我是C ++的新手,我需要用向量来解决问题。我需要的是合并两个现有的向量并创建第三个向量。虽然我看到了几个答案,但这里的区别在于我需要向量#3(values3)不包含所有值,而只包含向量#1(values1)和#2(values2)中的值。因此,如果整数2在向量1中但不在向量2中,则此数字不适合我。我应该使用下面提供的功能。注释行是我不知道写什么的。其他行正在工作。

void CommonValues(vector<MainClass> & values1, vector<MainClass> & values2, vector<MainClass> & values3)
{
    MainClass Class;
    string pav;
    int kiek;
    vector<MainClass>::iterator iter3; // ?
    for (vector<MainClass>::iterator iter1 = values1.begin(); iter1 != values1.end(); iter1++)
    {
        for (vector<MainClass>::iterator iter2 = values2.begin(); iter2 != values2.end(); iter2++)
        {
            if (iter1 == iter2)
            {
                pav = iter2->TakePav();
                iter3->TakePav(pav); // ?
                kiek = iter1->TakeKiek() + iter2->TakeKiek();
                iter3->TakeKie(kiek); // ?
                iter3++; // ?
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您可以对values1和values2进行排序,然后使用std :: intersection:http://en.cppreference.com/w/cpp/algorithm/set_intersection

您的代码目前无法正常工作,除了其他问题之外,您将向量1的迭代器与向量2的迭代器进行比较,这没有任何意义。如果你想通过循环来做,你应该迭代一个向量并检查值,例如* iter1,是否在第二个向量中。