C++标准模板库(STL)之Map
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的更多相关文章
- 标准模板库(STL)学习探究之stack
标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string
- C++ 标准模板库(STL)
C++ 标准模板库(STL)C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列), ...
- STL学习系列之一——标准模板库STL介绍
库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每 ...
- 标准模板库--STL
标准模板库STL 1.泛型程序设计 C++ 语言的核心优势之一就是便于软件的重用 C++中有两个方面体现重用: 1.面向对象的思想:继承和多态,标准类库 2.泛型程序设计(generic progra ...
- 标准模板库(STL)学习探究之vector容器
标准模板库(STL)学习探究之vector容器 C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...
- C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用
摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动 ...
- 实验8 标准模板库STL
一.实验目的与要求: 了解标准模板库STL中的容器.迭代器.函数对象和算法等基本概念. 掌握STL,并能应用STL解决实际问题. 二.实验过程: 完成实验8标准模板库STL中练习题,见:http:// ...
- C++的标准模板库STL中实现的数据结构之链表std::list的分析与使用
摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解,即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第二篇.主要针对线性表中的链表 ST ...
- C++ 标准模板库STL 队列 queue 使用方法与应用介绍
C++ 标准模板库STL 队列 queue 使用方法与应用介绍 queue queue模板类的定义在<queue>头文件中. 与stack模板类很相似,queue模板类也需要两个模板参数, ...
- 【c++】标准模板库STL入门简介与常见用法
一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...
随机推荐
- jsp页面在Android系统和ISO系统的兼容性问题
问题:一个jsp页面在Android手机上显示正常,但到了ISO系统上jsp页面的样式不显示了. 原因:css文件中设置样式时单位不兼容. 解决方案:将rem 转换成px;
- [Offer收割] 编程练习赛63
题目1 : 命名 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 有两个公司想要合并,第一个公司的名字是一个字符串S,第二个公司的名字是一个字符串T. 合并后的新公司是这样 ...
- Unity 新手入门 如何理解协程 IEnumerator yield
Unity 新手入门 如何理解协程 IEnumerator 本文包含两个部分,前半部分是通俗解释一下Unity中的协程,后半部分讲讲C#的IEnumerator迭代器 协程是什么,能干什么? 为了能通 ...
- 010 Editor Mac安装教程
010 Editor mac版是mac上一款非常强大的十六进制编辑器,可以帮助用户进行编辑十六进制和二进制,可选择自己需要的进制进行编辑,还可对任何的文件进行编辑:软件内置了强大的模块.脚本操作,只需 ...
- 读 vue 源码一 (为什么this.message能够访问data里面的message)
12月离职后,打算在年后再找工作了,最近陆陆续续的看了黄轶老师的vue源码解析,趁着还有几天过年时间记录一下. 目标:vue如何实现通过this.key,就能直接访问data,props,method ...
- linux启动httpd服务出现 Could not reliably determine the server`s fully qualified domain name.
安装好apache启动httpd服务时,出现httpd: Could not reliably determine the server's fully qualified domain name, ...
- ES6中的类和继承
class的写法及继承 JavaScript 语言中,生成实例对象的传统方法是通过构造函数.下面是一个例子 function Point(x, y) { this.x = x; this. ...
- Pormise
//Pormisefunction MyPromise (executor) { var self = this self.status = 'pending' self.resolveValue = ...
- oracle sql生成临时递增数据
1.生成1至10记录 select rownum from dual connect 结果: 12345678910 2.生成最近12个月记录 ), 'yyyyMM') time from dual ...
- list,tuple,dict,set的增删改查
数据结构 list tuple dict set 增 append insert d['key']=value add 删 pop pop(0) d.pop('name') pop re ...