我有2个向量,其中一个有vec1 {e1,e2,e3,e4},另一个有vec2 {e2,e4,e5,e7}
如何从上面的向量中有效地获得三个向量,使得1.has元素仅在vec1中可用类似2只有vec2元素和3.with common elements
std::set_intersection
应该这样做,如果两个向量都排序:http:
//msdn.microsoft.com/en-us/library/zfd331yx.aspx
std::set_intersection(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), std::back_inserter(vec3));
自定义谓词也可用于比较:
std::set_intersection(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), std::back_inserter(vec3), my_equal_functor());
如果它们没有排序,你当然可以先对它们进行排序,或者你也可以遍历vec1,对于每个元素,使用std :: find查看它是否存在于vec2中.