map是C++中基于红黑树的关联容器,支持键值对存储与O(log n)时间复杂度的查找、插入和删除。需包含头文件,常用操作包括insert、emplace、下标访问、find、count、遍历、erase及size等,键可自定义但需提供比较规则,注意下标访问可能默认插入。

在C++中,map 是一种非常实用的关联容器,用于存储键值对(key-value pairs),并能根据键快速查找对应的值。它底层通常基于红黑树实现,保证元素按键有序排列,且插入、删除、查找的时间复杂度为 O(log n)。下面介绍 map 的基本使用方法和常见操作。
1. 包含头文件并声明 map
使用 map 前需要包含对应的头文件:
#include
然后可以通过模板参数指定键和值的类型来定义 map 对象:
std::map studentScores; // 键为字符串,值为整数std::map idToName; // 键为整数,值为字符串
2. 插入元素
有多种方式向 map 中添加键值对:
立即学习“C++免费学习笔记(深入)”;
使用 insert() 方法:
studentScores.insert(std::make_pair(“Alice”, 95));
studentScores.insert({“Bob”, 87});使用下标操作符 [ ]:
studentScores[“Charlie”] = 90;
注意:如果键不存在,[ ] 会自动创建一个默认值;若已存在,则覆盖原值。 使用 emplace() 原地构造:
studentScores.emplace(“David”, 82);
更高效,避免临时对象生成。
3. 访问和查找元素
获取 map 中的值主要有以下几种方式:
通过下标访问:
int score = studentScores[“Alice”];
如果键不存在,会自动插入一个默认初始化的值(如 int 为 0),需谨慎使用。 使用 find() 方法判断是否存在:
auto it = studentScores.find(“Alice”);
if (it != studentScores.end()) {
std::cout second;
}
返回迭代器,不存在时等于 end()。 使用 count() 判断键是否存在(适用于 map 总是唯一键):
if (studentScores.count(“Alice”)) { /* 存在 */ }
4. 遍历 map
可以使用范围 for 循环或迭代器遍历所有键值对:
for (const auto& pair : studentScores) {
std::cout }
或者使用显式迭代器:
for (auto it = studentScores.begin(); it != studentScores.end(); ++it) {
std::cout first ” second }
5. 删除元素
可通过键或迭代器删除元素:
按键删除:
studentScores.erase(“Bob”);按迭代器删除:
auto it = studentScores.find(“Charlie”);
if (it != studentScores.end()) {
studentScores.erase(it);
}清空整个 map:
studentScores.clear();
6. 其他常用操作
获取大小:
size_t size = studentScores.size();检查是否为空:
if (studentScores.empty()) { /* 无元素 */ }支持自定义类型作为键:
只要该类型支持比较操作(如重载 struct Person {
std::string name;
int age;
};
struct ComparePerson {
bool operator()(const Person& a, const Person& b) const {
return a.name }
};
std::map personMap;
基本上就这些。map 容器适合需要按键查找、排序存储的场景,掌握这些基本操作后,就能在实际项目中灵活使用了。注意避免滥用下标访问导致意外插入,默认构造可能带来副作用。不复杂但容易忽略细节。
以上就是c++++怎么使用map容器_C++ map关联容器基本操作指南的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1479580.html
微信扫一扫
支付宝扫一扫