我正在寻找 的替代品std::set。我需要它来支持更多操作std::set:
将元素从一组移动到另一组,无需“创建新的->复制->删除旧的”。
在某个位置拆分集合以获得两个集合(可以使用 获得类似的行为std::list splice)
设置操作(如并集),无需不必要的复制。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允许合并两个集合而不复制或移动任何元素,仅更新内部指针。
| 归档时间: |
|
| 查看次数: |
3568 次 |
| 最近记录: |