std::map支持多种插入删除操作。1. 插入可用insert()、emplace()或下标[],其中emplace()更高效;2. 删除可用erase(键)、erase(迭代器)或clear();3. 注意[]会默认构造值,erase后迭代器失效。

在C++中,std::map 是一个关联容器,用于存储键值对(key-value pairs),并根据键自动排序。它基于红黑树实现,支持高效的插入、删除和查找操作。本文汇总了 map 的常用插入与删除方法,帮助你更高效地使用 map 容器。
向 map 中添加元素有多种方式,以下是最常用的几种方法:
1. 使用 insert() 方法
insert() 是最标准的插入方式,接受 pair 类型或使用 make_pair 构造键值对。
立即学习“C++免费学习笔记(深入)”;
std::map<int, std::string> myMap;
myMap.insert(std::make_pair(1, "Alice"));
myMap.insert(std::pair<int, std::string>(2, "Bob"));
myMap.insert({3, "Charlie"}); // C++11 支持花括号语法
2. 使用 emplace() 方法
emplace() 在原地构造元素,避免临时对象的创建,效率更高。
myMap.emplace(4, "David"); // 直接传入键和值构造 pair
3. 使用下标操作符 [ ]
通过键直接赋值,若键不存在则自动插入;若存在则更新其值。
myMap[5] = "Eve"; myMap[1] = "Alice Updated"; // 更新已存在的键
注意:使用 [] 会默认构造键对应的值(调用 value_type 的默认构造函数),即使没有显式赋值,因此可能造成意外插入。
从 map 中删除元素有三种主要方式,可根据需求选择合适的方法。
1. 使用 erase() 删除指定键
通过键删除元素,返回删除的元素个数(map 中最多为1)。
myMap.erase(1); // 删除键为 1 的元素
2. 使用 erase() 删除迭代器指向的元素
可以删除单个迭代器或一段范围。
auto it = myMap.find(2);
if (it != myMap.end()) {
myMap.erase(it); // 删除该位置元素
}
// 删除一个区间
myMap.erase(myMap.begin(), myMap.find(3)); // 删除从开始到键为3之前的所有元素
3. 使用 clear() 清空整个 map
移除所有元素,使 map 变为空。
myMap.clear();
插入时的选择建议:
删除时的注意点:
基本上就这些。掌握 insert、emplace、[] 插入方式以及 erase 和 clear 的删除方法,就能灵活处理 map 的增删操作。理解它们的行为差异,有助于写出更安全高效的代码。
以上就是c++++中map的插入和删除操作_c++ map元素添加与删除方法汇总的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号