gpt4 book ai didi

c++ - 如何在C++中获得(无序)集合差异或对称差异?

转载 作者:行者123 更新时间:2023-12-03 07:09:09 26 4
gpt4 key购买 nike

我无法从文档中推断出可以使用std::set_difference,因为它说集合应该排序,这意味着它们不是集合,而是列表。同样,所有示例都是关于有序列表,而不是集合。

怎么知道真相?

最佳答案

std::set_difference可用于任意排序的输入(预排序的std::vectorstd::liststd::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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com