2011-03-25 98 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

相关问题