【发布时间】:2017-04-20 07:08:48
【问题描述】:
在 STL 算法中,有几个“集合”操作,如 set_union、set_difference、set_intersection、set_symmetric_difference,但我希望在 2 个向量之间进行:
vector<int> A={1,2,3,4};
vector<int> B={1,3};
我希望得到 A-B,所以 A-B={2,4}。
有没有方便的方法来做这个“减号”? 谢谢!
【问题讨论】:
-
听起来像
std::set_difference,不是吗?你已经提到它了,那你为什么不认为你可以使用它呢?它只需要对您的vectors 进行排序,您的也是。 -
哦,我想我明白了:你认为你只能在
std::set上使用set_算法吗?不对。标准库中的容器和算法不直接交互,而是通过迭代器,因此算法不需要关心它们操作的容器的确切类型。如果您还希望结果进入vector,请使用back_inserter为算法创建输出迭代器。
标签: c++ algorithm function stl set