1. 底层实现
set:底层使用 红黑树(自平衡二叉搜索树)实现,因此存储的元素是 有序的。插入、查找、删除操作的时间复杂度为 O(log n)。
unordered_set:底层使用 哈希表 实现,元素是 无序的。插入、查找、删除操作的平均时间复杂度为 O(1),最坏情况下可能为 O(n)(当发生大量哈希冲突时)。
2. 查找性能
set:由于使用红黑树,查找性能是 O(log n),适合需要按顺序访问元素的场景。
unordered_set:使用哈希表,查找性能在大多数情况下是O(1),适合对顺序无要求、但要求快速查找的场景。
3. 使用场景
set:适用于需要 有序 的数据存储,比如需要按顺序遍历元素,或需要在插入时自动排序的场景。
unordered_set:适用于 无序 的场景,且主要追求 查找速度,如需要频繁查找、插入和删除的情况。