C++中的map是基于红黑树的关联容器,自动按键排序,支持O(log n)查找、插入和删除。需包含头文件,定义为map,可使用{}初始化。通过下标[]访问会自动创建默认值,insert()和emplace()更安全高效。查找用find()或count(),删除用erase()。元素按键升序排列,可用范围for或迭代器遍历。常用操作包括size()、empty()、clear()等。键类型需支持比较,自定义类型需提供比较规则。

C++ 中的 map 是标准模板库(STL)中非常实用的关联容器,它以键值对(key-value pair)的形式存储数据,并自动根据键进行排序。map 的底层通常基于红黑树实现,因此查找、插入和删除操作的时间复杂度为 O(log n),适用于需要快速查找和有序遍历的场景。
map 的基本定义与初始化
要使用 map,需要包含头文件
。其模板参数有两个:键类型(key)和值类型(value)。
基本语法:
map variableName;
示例:
立即学习“C++免费学习笔记(深入)”;
map studentScores; —— 用姓名作为键,成绩作为值。 map idToName; —— 用编号映射名字。
支持直接初始化(C++11 起):
map scores = {{“Alice”, 95}, {“Bob”, 87}, {“Charlie”, 90}};
插入与访问元素
map 提供多种方式插入和访问键值对:
下标操作符 [ ]:通过键访问对应的值。若键不存在,则自动创建并用默认值初始化。 studentScores[“Alice”] = 95;
cout insert() 方法:更安全地插入,避免意外创建元素。 studentScores.insert(make_pair(“David”, 88));
// 或使用 { }
studentScores.insert({“Eve”, 92}); emplace():原地构造,效率更高。 studentScores.emplace(“Frank”, 85);
注意:使用 [ ] 访问不存在的键会自动插入该键并赋予默认值(如 int 为 0),可能影响判断逻辑。
查找与删除元素
map 提供了高效的查找方法:
find(key):返回指向该键值对的迭代器,未找到则返回 end()。 auto it = studentScores.find(“Alice”);
if (it != studentScores.end()) {
cout second;
} count(key):返回 1(存在)或 0(不存在)。map 中键唯一,所以最多返回 1。 if (studentScores.count(“Bob”)) {
cout }
删除元素使用 erase():
erase(key):按键删除。 erase(iterator):按迭代器删除。 studentScores.erase(“Bob”);
studentScores.erase(it); // it 为有效迭代器
遍历 map
map 中的元素按键升序排列,可使用迭代器或范围 for 循环遍历:
for (const auto& pair : studentScores) {
cout }
也可使用传统迭代器:
for (auto it = studentScores.begin(); it != studentScores.end(); ++it) {
cout first ” second }
其他常用操作
size():返回元素个数。 empty():判断是否为空。 clear():清空所有元素。 begin()/end():获取首尾迭代器。
例如:
if (!studentScores.empty()) {
cout }
基本上就这些。map 在处理键值映射时非常直观高效,掌握它的基本用法能显著提升 C++ 编程效率。注意键的类型必须支持比较操作(如
以上就是c++++中map的基本用法_c++ map容器键值映射详解的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1481270.html
微信扫一扫
支付宝扫一扫