map翻译为映射.众所周知,在定义数组时(如int array[100]),其实是定义了一个从int型到int型的映射,比如array[0]=25就是将0映射到25,一个double型数组则是将int型映射到double型,map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器).

1.map的定义

   map<typename1, typename2> mp;

   map的定义与其它STL容器有所不同,map需要确定映射前类型(键key)和映射后类型(值value)

2.map容器内元素的访问

   (1)通过下标访问

       和普通的数组是一样的.

   (2)通过迭代器访问

        map迭代器的定义和其它STL一样: map<typename1, typename2>::iterator it;

        map使用 it->first来访问键, 使用 it->second来访问值,且map会以键从小到大自动排序.

3.map常用函数

   (1) find()

         find(key)返回键为key的映射的迭代器,时间复杂度为O(logN),N为map中映射的个数.

   (2) erase()

         删除单个元素:

         <1> mp.erase(it) , it为需要删除的元素的迭代器.

         <2>map.erase(key), key为需要删除的映射的键.

         删除一个区间的所有元素:

         map.erase(first,last), first和last分别为需要删除的区间的起始迭代器和末尾迭代器的下一个地址,也即删除左闭右开的区间[first,last)

   (3)size()

        用来获得map中映射的对数

   (4)clear()

       用来清空map中所有元素.

 应用举例:

#include <iostream>
#include <map>
using namespace std;
int main()
{map<char,int> mp;char a='a';for(int i=1;i<=26;i++)mp[a++]=i;map<char,int>::iterator it=mp.begin();cout<<"map容器内初始映射为:"<<endl; for(;it!=mp.end();it++)cout<<it->first<<"  "<<it->second<<endl;cout<<"初始映射对数为 : "<<mp.size()<<endl; map<char,int>::iterator is=mp.find('l');mp.erase(mp.begin(),is) ;cout<<"s删除后map容器内映射为:"<<endl; for(;is!=mp.end();is++)cout<<is->first<<"  "<<is->second<<endl;cout<<"删除后映射对数为 : "<<mp.size()<<endl; mp.clear();cout<<"清空后map中映射对数为 : "<<mp.size()<<endl; cout<<"测试结束!!!";return 0;
}

pair可以看作一个内部有两个任意类型元素的结构体,常作为map的键值进行插入.使用时应加上头文件<utility>或<map>

1.pair的定义

   pair<typename1,typename2> name;

   临时构建一个pair有以下两种方法:

   方法一: pair<string,int> p("haha",5)   方法二: make_pair("haha",5)

2.pair中元素的访问

   pair中只有两个元素,分别是first和second,只需按正常结构体的方式去访问即可.

3.常用函数

   两个pair类型数据可以直接使用==,!=,<,<=,>,>=比较大小,比较规则是先以first的大小作为标准,相等时再去判别second的大小.

应用举例:

#include <iostream>
#include <string>
#include<map>
using namespace std;
int main()
{map<string,int> mp;mp.insert(make_pair("heihei",5));mp.insert(pair<string,int>("haha",10));map<string,int>::iterator it=mp.begin();for(;it!=mp.end();it++)cout<<it->first<<"  "<<it->second<<endl;return 0;
}

C++标准模板库之map及pair相关推荐

  1. stl标准模板库_如何在C ++ STL(标准模板库)中使用Pair

    stl标准模板库 In this article, we'll take a look at using pair in C++ Standard Template Library (STL). 在本 ...

  2. C++中标准模板库std::pair的实现

    以下用C++实现了标准模板库中的std::pair实现,参考了 cplusplus 和 vs2013中的utility文件. 关于std::pair的介绍和用法可以参考: https://blog.c ...

  3. 标准模板库(STL)之 map 列传 (二)

    标准模板库(STL)之 map 列传 map 容器的遍历 修改 key or value 实用的成员函数 下标 vs at map 容器的遍历 使用 range-based for 循环访问 map ...

  4. 【c++】标准模板库STL入门简介与常见用法

    一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...

  5. c++标准模板库STL【快速查找】【最全】【常用】【语法】

    c++标准模板库STL[快速查找][最全][常用][语法] c标准模板库STL快速查找最全常用语法         vector- 变长数组         set-内部自动有序且不含重复元素     ...

  6. 标准模板库STL学习总结

    标准模板库就是类与函数模板的大集合.STL共有6种组件:容器,容器适配器,迭代器,算法,函数对象和函数适配器. 1.容器: 容器是用来存储和组织其他对象的对象.STL容器类的模板在标准头文件中定义.主 ...

  7. c++ 的 stl模板库_C ++中的标准模板库(STL)

    c++ 的 stl模板库 Standard Template Library (STL) is a collection of standard C++ template classes. It co ...

  8. 第十章 标准模板库STL

    第十章 标准模板库STL 因为是在复习时重写的,无法在PTA上验证,编程题格式可能有误. 判断题 1.可以通过下标随机访问向量vector中的元素.(T) 2.当向量对象的内存用完之后,就会产生越界错 ...

  9. 《C++ Primer Plus》读书笔记 第16章 string类和标准模板库

    第16章 string类和标准模板库 1.string类 表16.1列出了string类的几个构造函数.其中NBTS(null-terminated string)表示以空字符结束的传统C-风格字符串 ...

最新文章

  1. lua 的正则表达式之坑
  2. mysql profile 不记录_mysql profile使用(转)
  3. Alibaba 应用诊断利器 Arthas 3.0.5 版本发布:提升全平台用户体验
  4. mysql uroot p 报错,MySQL链接错误集。
  5. 一个简单的用户注册JavaBean
  6. python判断字符串里的字符_Python检测字符串中是否包含某字符集合中的字符
  7. struts2的s:datetimepicker日期时间标签选择器
  8. html把毫秒转换成年月日,JS实现获取毫秒值及转换成年月日时分秒的方法
  9. 1688API item_search_img - 按图搜索1688商品(拍立淘)
  10. Django验证码*异步方案Celery之Celery介绍和使用(Celery介绍、创建Celery实例并加载配置、加载Celery配置、定义发送短信任务、启动Celery服务、调用发送短信任务)
  11. Tomcat中temp文件夹出现项目副本问题的解决方法
  12. 案例分享 | ASA广告竞争背后的“爱与和平”
  13. web开发经典,jquery修改style属性display
  14. 回顾一年的IT学习历程与大学生活
  15. Cisco交换机与路由器常用协议及其配置命令
  16. 【战神引擎】一键打开所有修改路径快捷方式
  17. 微信小程序 textarea读取到的文本换行问题 以及保存回车换行到后台
  18. 两台设备连接在同一Wi-Fi不能通信问题解决
  19. RabbitMQ实战 - Confirm机制
  20. 『开源』一个简单的 字符串计算 算法开源

热门文章

  1. 【BZOJ4402】Claris的剑(组合数学)
  2. 批量给TXT文档插入带标题合成图片-Chatgpt生成TXT文档配图神器
  3. MSE, R2, R等误差指标
  4. iframe简单使用 、获取iframe 、获取iframe 元素值 、iframe获取父页面的信息
  5. 堆排序算法回顾---(韩顺平数据结构)笔记
  6. 诚之和:“旧改之王”佳兆业爆雷后,兑付方案最新出炉
  7. MFC定时器SetTimer
  8. tensorflow中如何进行可视化和减轻过拟合
  9. MySQL执行计划解读 转他人文章
  10. 计算机应用基础实训任务2,计算机应用基础实训任务2