2013-02-15 61 views
3

我想比較兩個對象向量元素並相應地獲取同一對象的其他向量元素。例如,對象有一個向量; foo1.a=[4 2 1 3] foo2.a=[2 1 4] 我想找到相同的元素,然後根據我從foo.a得到的發現,相應地得到其他向量包含,如foo1.b=[8 8 2 10]foo2.b=[8 2 8]。我試圖比較循環中的兩個向量,然後得到相同的結果,但是我失敗了。如何比較同一對象的兩個向量並獲取其他元素

+2

我不明白。你想比較兩個向量元素?還是兩個向量?你如何生成結果向量? – jogojapan 2013-02-15 05:46:51

+2

聖潔的廢話,一段很難解析... – thang 2013-02-15 05:48:18

+0

比較'a'向量,如果他們有相同的元素從'b'向量獲得相同的索引元素。如果它們不同,我也想在'b'中得到相應的索引元素。正如你所看到的,兩個'a'向量有一些相同的元素,我不想兩次獲得相同的元素。 – 2013-02-15 05:52:02

回答

3

給定兩個向量:

std::vector<int> v1; // {4, 2, 1, 3}; 
std::vector<int> v2; // {2, 1, 4}; 

首先,sort兩個向量,使得它很容易找到共同的要素:

std::sort(v1); // {1, 2, 3, 4} 
std::sort(v2); // {1, 2, 4} 

使用set_intersection找到共同的元素:

std::vector<int> vi; 
std::set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), vi.begin()); // {1, 2, 4} 

使用set_difference找到唯一元素:

std::vector<int> vd; 
std::set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), vd.begin()); // {3} 
+0

問題不僅在於找到兩個向量或集合的交集或差異。然後我們應該在b中找到相應的元素來分配其他向量。 – 2013-02-15 15:57:35

相關問題