C++11 创建第三个矢量,同时循环其他两个矢量 我完全是C++新手,需要用向量来解决问题。我需要的是合并两个现有向量并创建第三个向量。虽然我看到了几个答案,但这里的区别在于我需要向量#3(值3)不包含所有值,而只包含向量#1(值1)和#2(值2)中的值。所以,如果整数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++; // ? } } } } void commonvalue(向量和值1、向量和值2、向量和值3) { 主类; 线状pav; 内基克; 向量::迭代器iter3;/? 对于(向量::迭代器iter1=values1.begin();iter1!=values1.end();iter1++) { 对于(向量::迭代器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++;/? } } } }

C++11 创建第三个矢量,同时循环其他两个矢量 我完全是C++新手,需要用向量来解决问题。我需要的是合并两个现有向量并创建第三个向量。虽然我看到了几个答案,但这里的区别在于我需要向量#3(值3)不包含所有值,而只包含向量#1(值1)和#2(值2)中的值。所以,如果整数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++; // ? } } } } void commonvalue(向量和值1、向量和值2、向量和值3) { 主类; 线状pav; 内基克; 向量::迭代器iter3;/? 对于(向量::迭代器iter1=values1.begin();iter1!=values1.end();iter1++) { 对于(向量::迭代器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++;/? } } } },c++11,for-loop,vector,C++11,For Loop,Vector,您可以对值1和值2进行排序,然后使用std::intersection: 您的代码目前无法工作,除其他问题外,您正在比较向量1中的迭代器和向量2中的迭代器,这没有任何意义。如果要通过循环执行,应迭代一个向量,并检查值(例如*iter1)是否在第二个向量中。问题未指定。例如,值1和值2是否已排序?是否允许您修改它们。如果values1包含10两次,values2只包含一次,那么10应该添加到values3多少次?@user515430值未排序,我无法修改它们,如果值重复,则只需要添加一次到新向量中

您可以对值1和值2进行排序,然后使用std::intersection:


您的代码目前无法工作,除其他问题外,您正在比较向量1中的迭代器和向量2中的迭代器,这没有任何意义。如果要通过循环执行,应迭代一个向量,并检查值(例如*iter1)是否在第二个向量中。

问题未指定。例如,值1和值2是否已排序?是否允许您修改它们。如果values1包含10两次,values2只包含一次,那么10应该添加到values3多少次?@user515430值未排序,我无法修改它们,如果值重复,则只需要添加一次到新向量中。希望我能提供更多的帮助。