2013-09-01 54 views
0

我有兩個向量A和B. A包含基於某個主鍵(例如row_id)的表格行形式的數據。向量B還包含一些基於同一個鍵的另一個表的行的形式的數據。現在我的要求是隻選擇向量A中的那些數據,當兩個向量A & B的row_id匹配並繼續執行其他功能時。這怎麼能實現?將所需數據從一個向量移動或應對到另一個向量

+1

我建議你自己嘗試,或者至少谷歌(真實),然後來找我們,如果你能顯示代碼不工作,你不知道爲什麼 –

+1

「當兩個向量A和B的row_id匹配時」是什麼意思?這是否意味着向量B包含任何具有相同row_id的元素,還是這意味着對於特定索引i,A [i]與B [i]具有相同的row_id?或者是其他東西? –

+0

這是一個功課題嗎? –

回答

1

如果A & B數據是這樣的:

struct X{ 
int row_id; 
int data; 
} 

然後,可以可能使用std::set_intersection像以下

其中,C將是從A & B中的具有矢量數據,其中row_id匹配

std::vector<X> A,B,C; 
//Sort A,B based on row_id use std::sort with custom comparator 

std::set_intersection (A.begin(), A.end(), B.begin(), B.end() 
       std::back_inserter(C), 
       [](const X& a, const X& b) { 
       return a.row_id < b.row_id 
       }); 
+0

@POW這需要排序的向量,你缺少B.end()。 –

+0

@DieterLücking更新謝謝 – P0W

+1

@POW另一件事:使用<比較id(C++使用小於等值) –

相關問題