Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 两个STL向量差分搜索的最佳实践解决方案_C++_Stl - Fatal编程技术网

C++ 两个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_

我已经有两个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);
向量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
中。我想你的意思是相反的。重要提示:向量必须被排序!重要提示:必须对向量进行排序!