当涉及到常见的容器 std::set
、std::map
、std::unordered_map
、和 std::unordered_set
时,它们的主要特点和使用情况可以总结如下:
四种增删查改
-
std::set
:- 用途:存储一组元素并保持唯一性,自动排序。
- 特点:
- 元素唯一,不允许重复。
- 自动按照元素的排序准则进行排序。
- 查找、插入和删除的平均时间复杂度为 O(log n)。
- 常用操作:
insert(value)
: 插入一个元素value
。erase(value)
: 删除与给定值value
相等的元素。count(value)
: 返回与给定值value
相等的元素的数量。find(value)
: 返回指向容器中第一个与给定值value
相等的元素的迭代器。
-
std::map
:- 用途:存储键值对,并根据键进行查找和访问。
- 特点:
- 键值对唯一,每个键只能关联一个值。
- 根据键自动排序。
- 查找、插入和删除的平均时间复杂度为 O(log n)。
- 常用操作:
insert({key, value})
: 插入一个键值对{key, value}
。erase(key)
: 删除与给定键key
相等的键值对。count(key)
: 返回与给定键key
相等的键值对的数量。find(key)
: 返回指向容器中第一个与给定键key
相等的键值对的迭代器。
-
std::unordered_map
:- 用途:存储键值对,并快速根据键进行查找和访问。
- 特点:
- 键值对唯一,每个键只能关联一个值。
- 不保持特定的顺序,使用哈希表实现。
- 查找、插入和删除的平均时间复杂度为 O(1)。
- 常用操作:
insert({key, value})
: 插入一个键值对{key, value}
。