C++ 两个STL向量差分搜索的最佳实践解决方案
我已经有两个STL向量了。例如:C++ 两个STL向量差分搜索的最佳实践解决方案,c++,stl,C++,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_
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);
向量MyList;
我的列表。向后推(10);
我的列表。推回(20);
我的列表。推回(30);
我的列表。推回(40);
我的列表。推回(50);
向量MyListSub;
MyListSub.推回(20);
MyListSub.推回(30);
MyListSub.推回(40);
我想得到MyListSub中的元素数,而不是MyList中的元素数。
对于本例,结果为“2”,您可以使用它:
std::vector<int> diff;
std::set_difference(MyList.begin(), MyList.end(),
MyListSub.begin(), MyListSub.end(),
std::back_inserter(diff));
可选地,您可以考虑将元素存储在<代码> STD::SET中,这样它们就已经被排序了。
< P>可以用这个:std::vector<int> diff;
std::set_difference(MyList.begin(), MyList.end(),
MyListSub.begin(), MyListSub.end(),
std::back_inserter(diff));
可选地,您可以考虑将元素存储在<代码> STD::SET<代码>中,这样它们就已经被排序了。
您的例子是向后的。MyListSub
中的所有元素也位于MyList
中。我想你的意思是相反的。你的例子是相反的。MyListSub
中的所有元素也位于MyList
中。我想你的意思是相反的。重要提示:向量必须被排序!重要提示:必须对向量进行排序!