什么是 std::set 插入成员函数的有效实现?因为数据结构基于 std::less 对元素进行排序(需要为元素类型定义运算符 <),所以在概念上很容易检测到重复项。
它实际上是如何在内部运作的?它是否使用红背树数据结构(Josuttis 书中提到的实现细节)?
标准数据结构的实现可能会有所不同...
我有一个问题,我被迫拥有一组(一般来说)应该是唯一的整数。集合的长度各不相同,因此我需要动态数据结构(根据我的狭隘知识,这将范围缩小到列表、集合)。元素不一定需要排序,但可能没有重复项。由于候选集总是有很多重复项(集合很小,最多 64 个元素),与 std::list 和其他算法相比,尝试使用 insert 成员函数将重复项插入 std::set 会导致大量开销那可能不会求助于对元素进行排序?
附加:输出集的大小固定为 27 个元素。对不起,我忘了这个......这适用于问题的特殊情况。对于其他情况,长度是任意的(低于输入集)。
最佳答案
如果您一次创建整个集合,您可以尝试使用 std::vector
来保存元素,使用 std::sort
来对它们进行排序,和 std::unique
删除重复项。
关于c++ - std::set<T>::insert,重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10516956/