1、Map的常用用法

map:映射。可以将任何基本类型,结构体,STL容器映射到任何基本类型包括容器。

使用map,需要加map的头文件,#include<map>和using namespace std;

1.1、map的定义

map<typename1,typename2> mp;
map<string,int> mp;
//如果是字符串到int的映射,必须使用string不能使用char数组。

1.2、map容器元素的访问

map的两种访问方式:下标访问、迭代器访问

1.2.1、下标访问

和访问数组一样。map中键是唯一的

1.2.2、迭代器访问

map<typename1,typename2>::iterator it;

#include<stdio.h>
#include<map> using namespace std; int main()
{
map<char,int> mp;
mp['a']=;
mp['b']=;
mp['d']=;
mp['c']=;
mp['c']=;//20被覆盖
printf("%d\n",mp['c']);
for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
{
printf("%c %d\n",it->first,it->second);//it->first:当前映射的键,it->second:当前映射的值
}
//a 5
//b 10
//c 30
//d 40
//map会以键从小到大的顺序自动排序。map内部是使用红黑树实现的,set内部也是。
//建立映射的时候,会自动实现从小到大的排序功能
return ;
}

1.3、map常用函数

1.3.1、find()

find(key):返回键为key的映射,时间复杂度为O(logN)

1.3.2、erase()

删除单个元素:

mp.erase(it):it为需要删除的元素的迭代器。时间复杂度为O(1)

mp.erase(key):key为删除元素的键,时间复杂度为O(logN)

删除区间内的元素,左闭右开[start,end)

1.3.3、size()
1.3.4、clear()

用来清空map,复杂度为O(N)

#include<stdio.h>
#include<map> using namespace std; int main()
{
map<char,int> mp;
mp['a']=;
mp['b']=;
mp['d']=;
mp['c']=;
mp['c']=;//20被覆盖
printf("%d\n",mp['c']);// mp.erase('b');//删除键为b的映射,也就是b 10
for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
{
printf("%c %d\n",it->first,it->second);
}
//a 5
//c 30
//d 40
map<char,int>::iterator it=mp.find("a");
mp.erase(it);//删除a 5
for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
{
printf("%c %d\n",it->first,it->second);
}
//c 30
//d 40
mp['e']=;
mp['f']=;
map<char,int>::iterator it=mp.find("d");
mp.erase(it,mp.end());//删除区间, d 40 e 50
return ;
}

1.4、map的常见用途

a、建立字符或者字符串与整数之间的映射的时候,使用map

b、判断大整数或者其他类型数据是否存在的时候,map可以当bool数组用

c、字符串和字符串的映射

2018-09-25 19:20:09

@author:Foreordination

C++标准模板库(STL)之Map的更多相关文章

  1. 标准模板库(STL)学习探究之stack

    标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string

  2. C++ 标准模板库(STL)

    C++ 标准模板库(STL)C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列), ...

  3. STL学习系列之一——标准模板库STL介绍

    库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每 ...

  4. 标准模板库--STL

    标准模板库STL 1.泛型程序设计 C++ 语言的核心优势之一就是便于软件的重用 C++中有两个方面体现重用: 1.面向对象的思想:继承和多态,标准类库 2.泛型程序设计(generic progra ...

  5. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

  6. C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用

    摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动 ...

  7. 实验8 标准模板库STL

    一.实验目的与要求: 了解标准模板库STL中的容器.迭代器.函数对象和算法等基本概念. 掌握STL,并能应用STL解决实际问题. 二.实验过程: 完成实验8标准模板库STL中练习题,见:http:// ...

  8. C++的标准模板库STL中实现的数据结构之链表std::list的分析与使用

    摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解,即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第二篇.主要针对线性表中的链表 ST ...

  9. C++ 标准模板库STL 队列 queue 使用方法与应用介绍

    C++ 标准模板库STL 队列 queue 使用方法与应用介绍 queue queue模板类的定义在<queue>头文件中. 与stack模板类很相似,queue模板类也需要两个模板参数, ...

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

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

随机推荐

  1. Linq高级查询,分页查询及查询分页结合

    一.高级查询与分页查询 1.以...开头    StartsWith Repeater1.DataSource=con.Users.Where(r=>r.Nickname.StartsWith( ...

  2. 前端使用node.js的http-server开启一个本地服务器

    前端使用node.js的http-server开启一个本地服务器 在写前端页面中,经常会在浏览器运行HTML页面,从本地文件夹中直接打开的一般都是file协议,当代码中存在http或https的链接时 ...

  3. Github-记账本

  4. go语言开发教程之web项目开发实战

    Golang介绍Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件 ...

  5. 安卓 ToolBar 颜色样式设置

    设置Toolbar弹出菜单的字体颜色和背景颜色,包括三个点菜单颜色和返回图标的颜色. 布局文件xml <LinearLayout xmlns:android="http://schem ...

  6. BIOS备忘录之SPI(fingerprint)设备

    Reset和INT信号使用的是GPIO功能,需要显式的使用(INT信号使用了GPIO的int number,RST信号使用了GPIO的absolute number): 问题举例 漏电导致功能异常:在 ...

  7. standby_file_management参数为MANUAL导致添加数据文件错误

    症状:standby_file_management 在MANUAL模式下添加数据文件报错处理: 1.standby_file_management为MANUAL,主库添加数据文件,从库发现如下报错: ...

  8. es6中promise实现ajax的例子

    function getData(url){ var pro = new Promise(function(resolve,reject){ var xhr = null; try{ xhr = ne ...

  9. kNN算法基本原理与Python代码实践

    kNN是一种常见的监督学习方法.工作机制简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k各训练样本,然后基于这k个“邻居”的信息来进行预测,通常,在分类任务中可使用“投票法”,即选择这k ...

  10. 复旦大学2018--2019学年第一学期(18级)高等代数I期末考试第七大题解答

    七.(本题10分)  设 $V$ 为 $n$ 维线性空间, $\varphi,\psi$ 是 $V$ 上的线性变换, 满足 $\varphi\psi=\varphi$. 证明: $\mathrm{Ke ...