c++ - 从第一个集合元素中删除第二个集合包含的元素而不进行迭代

标签 c++ stl

我有两组对(我不能使用 c++11)

std::set<std::pair<int,int> > first;
std::set<std::pair<int,int> > second;

我需要从第一个集合中删除第二个集合中的所有元素(如果第一个包含第二个要删除的元素)。我可以通过遍历第二个集合来做到这一点,如果第一个包含相同的元素,则从第一个元素中删除,但我想知道有没有办法在没有迭代的情况下做到这一点?

最佳答案

如果我没理解错的话,基本上你是想计算first和second的差值。有一个 <algorithm>的功能。

std::set<std::pair<int, int>> result;
std::set_difference(first.begin(), first.end(), second.begin(), second.end(), inserter(result, result.end()));

关于c++ - 从第一个集合元素中删除第二个集合包含的元素而不进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15590254/

相关文章:

c++ - 将指针从一种基类型转换为另一种

c++ - Boost Read_graphml 没有正确读取 xml 它提供了所有顶点,但它们是空的

c++ - find_if on vector<Message*> with bind2nd 和 functor

c++ - 序列容器不是通用容器的子集吗?

c++ - 否定一个数字的最快方法

c++ - 进程的内存空间从哪里开始,到哪里结束?

c++ - 如何更新 std::set 的现有元素?

c++ - 这个数组交集的实现是如何工作的?

c++ - 链接器错误 2001 未解析的外部符号

c++ - 更改全局变量名称