C++中map的使用

本文详细介绍了C++ STL中Map和Unordered_map的使用方法,包括各种操作函数如find、insert、erase等的用法,以及如何通过key和value进行查找。对比了Map与Unordered_map在不同场景下的优劣,提供了丰富的参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

1. 简单的map

2. hash_map、unorder_map

3. (通过key找value)和(通过value找key)


1. 简单的map

https://www.cnblogs.com/omelet/p/6617362.html

https://blog.youkuaiyun.com/wangjingqi930330/article/details/81938998

      begin()          返回指向map头部的迭代器
   clear()         删除所有元素
      count()          返回指定元素出现的次数
      empty()          如果map为空则返回true
      end()            返回指向map末尾的迭代器
      equal_range()    返回特殊条目的迭代器对
      erase()          删除一个元素
      find()           查找一个元素
      get_allocator()  返回map的配置器
      insert()         插入元素
      key_comp()       返回比较元素key的函数
      lower_bound()    返回键值>=给定元素的第一个位置
      max_size()       返回可以容纳的最大元素个数
      rbegin()         返回一个指向map尾部的逆向迭代器
      rend()           返回一个指向map头部的逆向迭代器
      size()           返回map中元素的个数
      swap()            交换两个map
      upper_bound()     返回键值>给定元素的第一个位置
      value_comp()      返回比较元素value的函数

2. hash_map、unorder_map

unorder_map 是hash_map的实现,以hash方式存储,大数据量时查找效率高,小数据量时比较耗内存,key不允许重复,关注内存使用时推荐使用unorder_map,在查找元素时一定要先判断key是否存在,否则,查找一个key不存在的数据,会先插入一条数据,value为默认值,然后返回这个默认值,查询key是否存在有两种方法,m.count(key):返回key的数量,不存在则返回0,map<>::iterator iter = m.find(key), if(iter == m.end) 则不存在。

https://www.jianshu.com/p/56bb01df8ac7

https://www.cnblogs.com/xiaoniu-666/p/9492967.html

3. (通过key找value)和(通过value找key)

https://blog.youkuaiyun.com/liu_yuan_kai/article/details/86243321 

### C++ STL `map` 容器使用教程 #### 创建与初始化 在C++中,`std::map` 是一种关联容器,它存储键值对并保持按键排序。为了使用`map`,需要包含相应的头文件,并指定命名空间。 ```cpp #include <iostream> #include <map> using namespace std; ``` 可以通过多种方式创建和初始化一个`map`实例: ```cpp // 默认构造函数 std::map<int, string> emptyMap; // 初始化列表 std::map<int, string> initListMap = {{1, "one"}, {2, "two"}}; // 复制另一个已存在的map std::map<int, string> copiedMap(initListMap); ``` 对于复制操作,可以直接利用等号运算符完成赋值[^1]。 #### 基本操作 ##### 插入数据 向`map`中插入新元素有几种不同的方法: ```cpp emptyMap.insert(std::make_pair(3, "three")); // 使用 insert 方法 emptyMap[4] = "four"; // 下标运算符自动插入不存在的 key-value 对 ``` ##### 访问元素 访问`map`中的元素通常通过下标运算符实现;需要注意的是如果key不存在,则会默认构造value类型的对象并将其加入到映射表里。 ```cpp cout << "Value of key 1 is: " << initListMap[1]; ``` ##### 删除元素 可以从`map`中移除特定项或清空整个结构体内的所有条目。 ```cpp initListMap.erase(1); // 移除单个元素 copiedMap.clear(); // 清空全部内容 ``` ##### 查找功能 提供了一套完整的接口用于定位某个具体的记录是否存在以及获取其位置迭代器。 ```cpp auto it = initListMap.find(2); if (it != initListMap.end()) { cout << "Found value: " << (*it).second; } ``` 此外还有其他实用的方法如`count()`用来判断某关键字是否有对应的映射关系存在[^3]。 #### 迭代遍历 支持标准输入输出流的操作,也允许借助迭代器机制逐一遍历内部成员变量。 ```cpp for(const auto& elem : initListMap){ cout << elem.first << ": " << elem.second << endl; } ``` 以上就是关于如何运用C++编程语言里的STL库组件——`map`的一些基础知识点介绍[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值