当前位置:  开发笔记 > 编程语言 > 正文

从2个向量中提取元素?

如何解决《从2个向量中提取元素?》经验,为你挑选了1个好方法。

我有2个向量,其中一个有vec1 {e1,e2,e3,e4},另一个有vec2 {e2,e4,e5,e7}

如何从上面的向量中有效地获得三个向量,使得1.has元素仅在vec1中可用类似2只有vec2元素和3.with common elements



1> jalf..:

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中.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有