C++关联式容器使用——Map与Set
C++提供了几种关联式容器,其中最常用的是std::map
和std::set
。它们都是基于红黑树实现的,因此提供了高效的元素查找、插入和删除操作。
std::map
std::map
是一种键值对(key-value pair)集合,其中每个键是唯一的。它根据键自动排序,默认使用键的升序排列。
主要特点
- 键唯一:每个键在
std::map
中只能出现一次。 - 自动排序:键根据比较函数(默认为
std::less<Key>
)自动排序。 - 高效查找:对数时间复杂度的查找、插入和删除操作。
常用操作
插入元素:
std::map<int, std::string> myMap;
myMap[1] = "One";
myMap.insert({2, "Two"});
访问元素:
std::string value = myMap[1]; // 如果1存在,则返回其对应值。若不存在,插入键1并返回默认值。
auto it = myMap.find(2); // 返回指向键2的迭代器,若不存在则等于myMap.end()
删除元素:
myMap.erase(1); // 删除键为1的元素
std::set
std::set
是一个储存唯一元素的集合,且元素按一定顺序排序。std::set
不存储键值对,只存储键。
主要特点
- 元素唯一:集合中没有重复的元素。
- 自动排序:元素根据比较函数(默认为
std::less<Key>
)自动排序。 - 高效查找:对数时间复杂度的查找、插入和删除操作。
常用操作
插入元素:
std::set<int> mySet;
mySet.insert(5);
mySet.insert(3);
检查元素存在:
bool exists = mySet.count(5) > 0; // 返回true如果元素5存在
删除元素:
mySet.erase(3); // 删除元素3
std::unordered_map
和 std::unordered_set
除了std::map
和std::set
,C++还提供了哈希表实现的无序版本:std::unordered_map
和std::unordered_set
,它们在大多数情况下提供更快的查找、插入和删除操作,因为它们具有常数平均时间复杂度。
希望这些信息对你在使用C++关联式容器时有所帮助!如果你还有任何疑问或需要具体的示例,随时可以问。