Tro*_*yvs 3 c++ algorithm stl function set
在STL算法中,有几个“设置”操作,例如set_union、set_difference、set_intersection、set_symmetry_difference\xef\xbc\x8c,但我希望在2个向量之间执行:
\n\nvector<int> A={1,2,3,4};\nvector<int> B={1,3};\nRun Code Online (Sandbox Code Playgroud)\n\n我希望得到AB,所以AB={2,4}。
\n\n有没有一种方便的方法来执行此“减”操作?\n谢谢!
\n只要 a已排序,您绝对可以set_在 a 上使用算法。然后您可以使用将输出推送到另一个:vectorvectorback_inserter()vector
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
int main() {
std::vector<int> v1 {1, 2, 3, 4};
std::vector<int> v2 {1, 3};
std::vector<int> out;
std::set_difference(std::begin(v1), std::end(v1), // the first vector...
std::begin(v2), std::end(v2), // ...minus the second...
std::back_inserter(out)); // ...is stored into here
for(auto i : out) std::cout << i << ' ';
}
Run Code Online (Sandbox Code Playgroud)
印刷:
2 4
Run Code Online (Sandbox Code Playgroud)
(请注意,此版本假设它可以使用比较元素<,并且元素是根据该元素进行排序的 - 这在您的情况下显然没问题)。