2011-03-25 97 views
0

我已經有兩個STL向量。例如:兩個STL載體的差異搜索的最佳實踐解決方案

vector<int> MyList; 
MyList.push_back(10); 
MyList.push_back(20); 
MyList.push_back(30); 
MyList.push_back(40); 
MyList.push_back(50); 

vector<int> MyListSub; 
MyListSub.push_back(20); 
MyListSub.push_back(30); 
MyListSub.push_back(40); 

我想獲取MyListSub中不在MyList中的元素數。 對於這種情況下,結果是「2」

+1

你的例子是倒退。 'MyListSub'中的所有元素也都在'MyList'中。我假設你的意思是相反的。 – 2011-03-25 12:05:43

+0

非常感謝你 – 2011-03-25 12:09:18

回答

4

您可以使用std::set_difference此:

std::vector<int> diff; 
std::set_difference(MyList.begin(), MyList.end(), 
        MyListSub.begin(), MyListSub.end(), 
        std::back_inserter(diff)); 

由於@Jan指出,載體具有進行排序。如果不是,使用std::sort對它們進行排序:

std::sort(MyList.begin(), MyList.end()); 

或者你可以考慮存儲在std::set的元素擺在首位,因此,他們就已經被排序。

+5

重要提示:載體必須進行排序! – 2011-03-25 12:37:53

相關問題