提示信息

C++关联式容器使用——Map与Set

一池温柔 已关注

C++提供了几种关联式容器,其中最常用的是std::mapstd::set。它们都是基于红黑树实现的,因此提供了高效的元素查找、插入和删除操作。

std::map

std::map是一种键值对(key-value pair)集合,其中每个键是唯一的。它根据键自动排序,默认使用键的升序排列。

主要特点

  • 键唯一:每个键在std::map中只能出现一次。
  • 自动排序:键根据比较函数(默认为std::less<Key>)自动排序。
  • 高效查找:对数时间复杂度的查找、插入和删除操作。

常用操作

  • 插入元素

    1. std::map<int, std::string> myMap;
    2. myMap[1] = "One";
    3. myMap.insert({2, "Two"});
  • 访问元素

    1. std::string value = myMap[1]; // 如果1存在,则返回其对应值。若不存在,插入键1并返回默认值。
    2. auto it = myMap.find(2); // 返回指向键2的迭代器,若不存在则等于myMap.end()
  • 删除元素

    1. myMap.erase(1); // 删除键为1的元素

std::set

std::set是一个储存唯一元素的集合,且元素按一定顺序排序。std::set不存储键值对,只存储键。

主要特点

  • 元素唯一:集合中没有重复的元素。
  • 自动排序:元素根据比较函数(默认为std::less<Key>)自动排序。
  • 高效查找:对数时间复杂度的查找、插入和删除操作。

常用操作

  • 插入元素

    1. std::set<int> mySet;
    2. mySet.insert(5);
    3. mySet.insert(3);
  • 检查元素存在

    1. bool exists = mySet.count(5) > 0; // 返回true如果元素5存在
  • 删除元素

    1. mySet.erase(3); // 删除元素3

std::unordered_mapstd::unordered_set

除了std::mapstd::set,C++还提供了哈希表实现的无序版本:std::unordered_mapstd::unordered_set,它们在大多数情况下提供更快的查找、插入和删除操作,因为它们具有常数平均时间复杂度。

希望这些信息对你在使用C++关联式容器时有所帮助!如果你还有任何疑问或需要具体的示例,随时可以问。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
一池温柔 关注 已关注

最近一次登录:2024-11-19 21:49:13   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图