作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法从文档中推断出可以使用std::set_difference,因为它说集合应该排序,这意味着它们不是集合,而是列表。同样,所有示例都是关于有序列表,而不是集合。
怎么知道真相?
最佳答案
std::set_difference
可用于任意排序的输入(预排序的std::vector
,std::list
,std::deque
,普通数组等),它也恰好与std::set
(已排序)一起使用。
如果您正在使用std::unordered_set
(或std::set
,并且可以就地进行操作),则只需使用erase
方法从一个这样的集合中将所有元素从另一个集合中删除即可,以得到区别,例如:
for (const auto& elem : set_to_remove) {
myset.erase(elem);
}
您也可以将其添加到新的
with std::copy_if
中;在配方上,它很容易适应对称差异的情况(这只是对
std::copy_if
的两次调用,其中每个调用都在一个输入集中运行,并且以其他输入集中不存在的元素为条件)。
关于c++ - 如何在C++中获得(无序)集合差异或对称差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60008057/
我是一名优秀的程序员,十分优秀!