前言:map是C++STL中的一个关联容器,它提供一对一的哈希值。map中的每一个元素都由2个相同或者不同的数据类型组成
第一个(first)数据类型可以称为关键字(key),每个关键字只能在map中出现一次
第二个(second)数据类型可以称为该关键字的值(value)

1.map的定义

 map<int, string>map1,map2;

2.map的插入

 map1.insert(pair<int, string>(100, "张三"));map1[101] = "李四";//常用/*重复插入时,后写的语句不会生效*/

3.map的遍历

 /*使用迭代器来对map来进行遍历*/map<int, string>::iterator i1;for (i1 = map1.begin(); i1 != map1.end(); i1++)cout << i1->second << ' ';cout << endl;cout << endl;/*反向遍历*/map<int, string>::reverse_iterator i3;for (i3 = map1.rbegin(); i3 != map1.rend(); i3++)cout << i1->second << ' ';cout << endl;cout << endl;/*数组遍历*/int n = map1.size();for (int i = 1; i <= n; i++)//i不能从0开始{cout << map1[i] << ' ';}cout << endl;cout << endl;

4.map的查找

 map<int, string>::iterator i2;i2 = map1.find(100);/*如果100对应的值不存在,i2=map1.end()*/cout << i2->second << endl;cout << endl;/*upper_bound函数用法,这个函数用来返回要查找关键字的上界(是一个迭代器)例如:map中已经插入了1,2,3,4的话,如果lower_bound(2)的话,返回的2,而upper-bound(2)的话,返回的就是3*/

5.map的删除

 map1.erase(100);/*map1.erase(iterator first,iterator last),删除一个范围*//*map1.clear(),清空*/for (i1 = map1.begin(); i1 != map1.end(); i1++)cout << i1->second << ' ';cout << endl;cout << endl;//map的交换map2[1] = "a";map2[2] = "b";map2[3] = "c";map2[4] = "d";map2[5] = "e";map1.swap(map2);for (i1 = map1.begin(); i1 != map1.end(); i1++)cout << i1->second << ' ';cout << endl;for (i2 = map2.begin(); i2 != map2.end(); i2++)cout << i2->second << ' ';cout << endl;

6.map的基本操作函数表

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

7.map完整测试代码

#pragma GCC optimize(2)
#include<iostream>
#include<iomanip>
#include<utility>
#include<cstdio>
#include<string>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
#include<map>
#include<stack>
#include<set>
#include<bitset>
#include<ctime>
#include<cstring>
#include<list>
#define ll long long
#define fi first
#define se second
using namespace std;
typedef  pair<int, int> PII;void solve()
{//map的定义/*一个map包含2个数据类型,第一个称为关键字,每个关键字在map中只能出现一次,第二个则称为该关键字的值*/map<int, string>map1,map2;//map的插入map1.insert(pair<int, string>(100, "张三"));map1[101] = "李四";//常用/*重复插入时,后写的语句不会生效*///map的遍历/*使用迭代器来对map来进行遍历*/map<int, string>::iterator i1;for (i1 = map1.begin(); i1 != map1.end(); i1++)cout << i1->second << ' ';cout << endl;cout << endl;/*反向遍历*/map<int, string>::reverse_iterator i3;for (i3 = map1.rbegin(); i3 != map1.rend(); i3++)cout << i1->second << ' ';cout << endl;cout << endl;/*数组遍历*/int n = map1.size();for (int i = 1; i <= n; i++)//i不能从0开始{cout << map1[i] << ' ';}cout << endl;cout << endl;//map的查找map<int, string>::iterator i2;i2 = map1.find(100);/*如果100对应的值不存在,i2=map1.end()*/cout << i2->second << endl;cout << endl;/*upper_bound函数用法,这个函数用来返回要查找关键字的上界(是一个迭代器)例如:map中已经插入了1,2,3,4的话,如果lower_bound(2)的话,返回的2,而upper-bound(2)的话,返回的就是3*///map的删除map1.erase(100);/*map1.erase(iterator first,iterator last),删除一个范围*//*map1.clear(),清空*/for (i1 = map1.begin(); i1 != map1.end(); i1++)cout << i1->second << ' ';cout << endl;cout << endl;//map的交换map2[1] = "a";map2[2] = "b";map2[3] = "c";map2[4] = "d";map2[5] = "e";map1.swap(map2);for (i1 = map1.begin(); i1 != map1.end(); i1++)cout << i1->second << ' ';cout << endl;for (i2 = map2.begin(); i2 != map2.end(); i2++)cout << i2->second << ' ';cout << endl;//map的基本操作函数表/*begin()          返回指向map头部的迭代器clear()         删除所有元素count()          返回指定元素出现的次数empty()          如果map为空则返回trueend()            返回指向map末尾的迭代器equal_range()    返回特殊条目的迭代器对erase()          删除一个元素find()           查找一个元素get_allocator()  返回map的配置器insert()         插入元素key_comp()       返回比较元素key的函数lower_bound()    返回键值大于等于给定元素的第一个位置max_size()       返回可以容纳的最大元素个数rbegin()         返回一个指向map尾部的逆向迭代器rend()           返回一个指向map头部的逆向迭代器size()           返回map中元素的个数swap()            交换两个mapupper_bound()     返回键值大于给定元素的第一个位置value_comp()      返回比较元素value的函数*/}int main()
{solve();return 0;
}

作者:Avalon·Demerzel

【数据结构】C++STL map 常见用法小结相关推荐

  1. [C++STL]map容器用法介绍

    代码如下: #include <iostream> #include <string> #include <map> using namespace std;voi ...

  2. STL剖析(二):容器底层数据结构及常见用法

    一.概述 本文主要聚焦于STL容器,STL完整的容器分类体系如下所示,下文将逐一对各个容器底层的数据结构以及常见用法进行介绍. 测试环境:Ubuntu 22.04 g++ 11.3.0 二.顺序容器 ...

  3. 学习STL map, STL set之数据结构基础

    STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构. C++ STL 之所以得到广泛的赞誉,也被很多人使用 ...

  4. STL 中map的用法详解

    STL 中map的用法详解 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可 ...

  5. vector 清空 Linux,STL容器vector基础用法小结

    STL容器vector基础用法小结根据<ACM程序设计>写的,用实例展示vector用法. 方法:push_back(), insert(), erase(), clear(), size ...

  6. STL MAP用法详解

    暂时未找到原创作者,望知情人士告知,谢过. 第一转贴:http://blog.csdn.net/nwf5d/archive/2009/07/10/4338872.aspx 说明:如果你具备一定的C++ ...

  7. C++ STL容器 —— map/multimap 用法详解

    C++ STL容器 -- map/multimap 用法详解 写在前面:近期正在学习C++的STL容器,因此在这里做一下日志记录,主要介绍一些容器基本成员函数的用法, 配上实际用例,并不涉及原理.但别 ...

  8. STL bitset用法小结(详细)附蓝桥杯题:明码

    bitset用法小结 使用bitset类型需引入头文件 #include< bitset > 它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间. bitset类 ...

  9. upperbound找不到_关于lower_bound( )和upper_bound( )的常见用法

    头文件:#include lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begi ...

  10. C++ STL模板库用法查询及一些常见面试题(自用)

    C++STL模板库 文章目录 C++STL模板库 用法查询 Array 1.使用 2.创建 3.成员函数 Vector 1.使用 2. 创建 3.成员函数 deque 1.使用 2. 创建 3.成员函 ...

最新文章

  1. Java Comparator排序
  2. python fastapi_Python|介绍一下我的新伙伴fastapi(一)
  3. hdu3714 水三分
  4. java 100例(二)
  5. HTML5 canvas组件
  6. 启动不起来_电脑启动不起来该怎么办
  7. 电脑常用音频剪辑软件_5款好用的音频剪辑软件推荐
  8. html中怎么让字体闪烁,HTML最简单的文字闪烁代码
  9. xadmin 组件拓展自定义使用
  10. Ubuntu系统下面软件安装更新命令
  11. 搭建php环境,更换织梦服务器
  12. Ubuntu上安装gcc
  13. mysql批量导入csv数据_csv批量导入mysql命令
  14. 使用lombok时,get/set方法冒红问题
  15. linux如何克隆mac地址,科技常识:详解Linux系统中网卡MAC地址克隆方法
  16. 向大家介绍一款代码阅读工具——Scitools Understand
  17. JavaFx+Mysql 实现学籍管理系统
  18. 树莓派魔镜MagicMirror —— 8 MagicMirror基本模块设计
  19. 嵌入式算法:STM32 F4xx 使用DSP实现cubic spline插值算法
  20. 【干货】2022抖音种草ATOM方法论:品牌社交效果增长模型.pdf(附下载链接)

热门文章

  1. 机器学习实战1-1 KNN电影分类遇到的问题
  2. 互联网全球化趋势下,印度极得美自我革新
  3. HTTP服务基础 、 网页内容访问 、 安全Web服务 、 部署动态网站
  4. 将Ext JS 5应用程序导入Web项目以及实现本地化
  5. 程序员最应该读的图书
  6. src2pkg:slackware下超强打包程式 [转]
  7. [译] JavaScript 中的私有变量
  8. OPPO R9s成为情侣最喜欢礼物,今年情人节就送它了!
  9. 利用Twemperf测试Memcache的性能
  10. Yii源码解读 - 事件