map相关总结

博客介绍了C++ map容器插入数据的四种方法,分别是用insert函数插入pair数据、用insert函数插入value_type数据、在insert函数中使用make_pair()函数以及用数组方式插入数据,还提及了安全使用at获取元素。

一  C++map容器插入数据的4种方法

在构造map容器后,我们就可以往里面插入数据了。这里讲四种插入数据的方法:

第一种:用insert函数插入pair数据:在VC下请加入这条语句,屏蔽4786警告 #pragma warning (disable:4786) )

  1.     map<int, string> mapStudent;  
  2.   
  3.     mapStudent.insert(pair<int, string>(1, "student_one"));  
  4.   
  5.     mapStudent.insert(pair<int, string>(2, "student_two"));  
  6.   
  7.     mapStudent.insert(pair<int, string>(3, "student_three")); 

第二种:用insert函数插入value_type数据,下面举例说明

  1.     map<int, string> mapStudent;  
  2.   
  3.     mapStudent.insert(map<int, string>::value_type (1, "student_one"));  
  4.   
  5.     mapStudent.insert(map<int, string>::value_type (2, "student_two"));  
  6.   
  7.     mapStudent.insert(map<int, string>::value_type (3, "student_three"));

第三种:在insert函数中使用make_pair()函数,下面举例说明

  1.     map<int, string> mapStudent;  
  2.   
  3.     mapStudent.insert(make_pair(1, "student_one"));  
  4.   
  5.     mapStudent.insert(make_pair(2, "student_two"));  
  6.   
  7.     mapStudent.insert(make_pair(3, "student_three"));  

第四种:用数组方式插入数据,下面举例说明

  1.     map<int, string> mapStudent;  
  2.   
  3.     mapStudent[1] = "student_one";  
  4.   
  5.     mapStudent[2] = "student_two";  
  6.   
  7.     mapStudent[3] = "student_three";  

 

转载链接:https://blog.youkuaiyun.com/qq_16334327/article/details/81051907

 

安全使用at获取元素

C++中的`map`容器是标准模板库(STL)的一部分,用于存储键值对(key-value pairs),并提供高效的查找、插入和删除操作。以下是`map`容器的常用操作方法: ### 构造与初始化 - `map`可以通过默认构造函数创建,也可以通过复制另一个`map`或指定比较函数来初始化。 ```cpp map<int, string> mapStu; // 默认构造 map<int, string> mapCopy(mapStu); // 复制构造 ``` ### 插入操作 - **使用`insert`方法**:可以插入一个`pair`对象,或者从另一个范围中插入元素。 ```cpp pair<map<int, string>::iterator, bool> ret = mapStu.insert(pair<int, string>(1, "张三")); ``` - **数组操作符**:直接通过键来设置值,如果键已存在,则更新其对应的值。 ```cpp mapStu[2] = "李四"; // 如果键2不存在,则插入;如果存在,则更新值 ``` ### 遍历操作 - **正向遍历**:使用迭代器从开始到结束遍历`map`。 ```cpp for (map<int, string>::iterator it = mapStu.begin(); it != mapStu.end(); ++it) { cout << "Key: " << it->first << ", Value: " << it->second << endl; } ``` - **反向遍历**:使用反向迭代器从末尾到开头遍历`map`。 ```cpp for (map<int, string>::reverse_iterator rit = mapStu.rbegin(); rit != mapStu.rend(); ++rit) { cout << "Key: " << rit->first << ", Value: " << rit->second << endl; } ``` ### 查找操作 - **查找键的迭代器**:使用`find`方法查找特定键的元素。 ```cpp map<int, string>::iterator it = mapStu.find(1); if (it != mapStu.end()) { cout << "Found: Key: " << it->first << ", Value: " << it->second << endl; } ``` - **判断键是否存在**:可以使用`count`方法或者结合`lower_bound`与`upper_bound`方法。 ```cpp if (mapStu.count(1)) { cout << "Key 1 exists." << endl; } ``` ### 删除操作 - **删除指定键的元素**:使用`erase`方法。 ```cpp mapStu.erase(1); // 删除键为1的元素 ``` - **删除指定位置的元素**:通过迭代器删除。 ```cpp map<int, string>::iterator it = mapStu.find(2); if (it != mapStu.end()) { mapStu.erase(it); } ``` - **清除所有元素**:使用`clear`方法。 ```cpp mapStu.clear(); ``` ### 交换操作 - **交换两个`map`的内容**:使用`swap`方法。 ```cpp map<int, string> mapStu2; mapStu.swap(mapStu2); // 交换mapStu和mapStu2的内容 ``` ### 排序 - `map`内部默认按照键的升序排列[^1]。 ### 总结 `map`容器提供了丰富的操作方法,适用于需要快速查找、插入和删除键值对的场景。掌握这些基本操作对于高效使用C++ STL至关重要[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值