Loading... C++标准模板库(STL)的map是一种关联容器,它存储的元素是键值对,键唯一,值可以重复。map的内部实现是一种平衡二叉搜索树(红黑树),这使得它的查找、插入、删除操作的时间复杂度都是O(log n)。 map的主要优点是,它能够快速地根据键查找对应的值。这是因为map的内部实现保证了元素始终是排序的,因此可以使用二分查找算法。这与其他的顺序容器(如vector和list)不同,它们的查找操作的时间复杂度是O(n)。 你可以使用map的insert成员函数来插入元素。insert函数的参数是一个std::pair对象,其中第一个元素是键,第二个元素是值。例如: ```cpp std::map<int, std::string> m; m.insert(std::make_pair(1, "one")); ``` 如果你试图插入一个已经存在的键,map不会替换旧的值,而是忽略新的插入。如果你想要替换一个已经存在的键的值,你可以使用下标操作符[]。例如: ```cpp m[1] = "uno"; ``` 你也可以使用下标操作符[]来插入新的键值对。如果键不存在,map会创建一个新的键值对,值是该类型的默认值。然后返回对应的值的引用,你可以使用这个引用来修改值。例如: ```cpp m[2] = "two"; ``` 你可以使用find成员函数来查找一个键。find函数的参数是一个键,如果找到,它返回一个指向键值对的迭代器。如果没找到,它返回map::end。例如: ```cpp auto it = m.find(1); if (it != m.end()) { std::cout << it->second << std::endl; } ``` 你可以使用erase成员函数来删除一个键。erase函数的参数是一个键或一个指向键值对的迭代器。例如: ```cpp m.erase(1); ``` 你可以使用begin和end成员函数来获取指向map首元素和尾元素后一位置的迭代器,然后使用这些迭代器来遍历map。例如: ```cpp for (auto it = m.begin(); it != m.end(); ++it) { std::cout << it->first << ": " << it->second << std::endl; } ``` 或者使用C++11引入的范围for循环: ```cpp for (const auto& p : m) { std::cout << p.first << ": " << p.second << std::endl; } ``` 总的来说,map是一个非常强大的数据结构,它提供了快速查找的能力,同时也支持高效的插入和删除操作。这使得它在许多情况下都是理想的选择,特别是当你需要根据键快速查找值的时候。 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://www.tsyvps.com" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://www.8kiz.cn/img/6.png);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">蓝易云-五网CN2服务器【点我购买】</p> <div class="inster-summary text-muted"> <span style='color: red;'>蓝易云采用KVM高性能架构,稳定可靠,安全无忧!<br>蓝易云服务器真实CN2回国线路,不伪造,只做高质量海外服务器。</span> </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> --- **<span style='color:#000000'>海外免备案云服务器链接:[www.tsyvps.com](https://www.tsyvps.com)</span>** **<span style='color:#DC143C'>蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。</span>** 最后修改:2023 年 09 月 15 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏