gpt4 book ai didi

c++ - std::set 的替代品(能够将元素从一个集合移动到另一个集合)

转载 作者:行者123 更新时间:2023-11-30 00:54:37 28 4
gpt4 key购买 nike

我正在寻找 std::set 的替代方法。我需要它来支持更多的操作 std::set:

  1. 无需“创建新的->复制->删除旧的”即可将元素从一组移动到另一组。

  2. 在某个位置拆分集合以获得两个集合(可以使用 std::list splice 获得类似的行为)

  3. 无需不必要的复制即可设置操作(如并集)。 std::set_union 会将集合 A 和 B 中的元素复制到集合 C,如果我只需要集合 C 而不再需要 A 和 B,则效率很低。

是否有任何实现支持这些操作,或者我需要自己编写一个?

最佳答案

我在 std::set 方面遇到了与您相同的问题,并且似乎没有任何理智的 C++11、C++14 解决方法。然而,在 C++17 中,std::set 中添加了两个新成员,它们看起来很有前途。std::set::extract 允许从集合中提取整个节点。删除的节点允许获得对基础值的非常量引用,有效地允许将元素移出集合。它也可以插入到另一个集合中而无需复制或移动基础值。 std::set::merge 允许在不复制或移动任何元素的情况下合并两个集合,仅更新内部指针。

关于c++ - std::set 的替代品(能够将元素从一个集合移动到另一个集合),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13876340/

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