我是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++; // ?
}
}
}
}
答案 0 :(得分:2)
您可以对values1和values2进行排序,然后使用std :: intersection:http://en.cppreference.com/w/cpp/algorithm/set_intersection
您的代码目前无法正常工作,除了其他问题之外,您将向量1的迭代器与向量2的迭代器进行比较,这没有任何意义。如果你想通过循环来做,你应该迭代一个向量并检查值,例如* iter1,是否在第二个向量中。