2015-02-23 55 views
0

循環我完全在C++的新手,我需要解決一個問題的載體。我需要的是合併兩個現有矢量並創建第三個矢量。雖然我看到了幾個答案,但這裏的區別是我需要向量#3(值3)來包含並非所有值,但只包含向量#1(值1)和2(值2)中的值。所以,如果整數2在矢量1中,但不在矢量2中,這個數字不適合我。我應該使用下面提供的功能。評論線是我不知道該寫什麼。其他線路正在工作。創建3載體,同時通過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

該問題未詳細說明。例如。是值1和值2排序?你可以修改它們嗎?如果values1包含10次兩次,並且values2只包含一次,那麼應將10次添加到values3多少次? – user515430 2015-02-23 19:24:08

+0

@ user515430值不排序,我不能修改它們,如果值重複,只需要添加一次到新的向量中。希望能夠詳細說明我的幫助。 – 2015-02-23 19:29:57

回答

4

您可以排序值1和values2,然後使用std ::路口:http://en.cppreference.com/w/cpp/algorithm/set_intersection

你此刻的代碼將無法正常工作,其他方面的問題,您是從矢量1迭代器比較迭代器矢量2,這沒有任何意義。如果你想通過循環來實現,你應該遍歷一個向量,並檢查這個值,例如* iter1,是否在第二個向量中。