33.1map基本概念
简介:
map中所有元素都是pair(对组)
pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)
所有元素都会根据元素的键值自动排序
本质:map/multimap属于关联式容器,底层结构是用二叉树实现
优点:
可以根据key值快速找到value值
map和multimap区别:
map不允许容器中有重复的key值元素(value值可以有重复)
multimap润许容器中有重复的key值元素
33.2map构造和赋值
功能描述:对map容器进行构造和赋值操作
函数原型:
构造:
mapmp; //map默认构造函数
map(const map &mp); //拷贝构造函数
赋值:
map& operator=(const map &mp); //重载等号操作符
#include
#include
运行结果:
key = 1 value = 10
key = 2 value = 20
key = 3 value = 30
key = 4 value = 40
------------------------------
key = 1 value = 10
key = 2 value = 20
key = 3 value = 30
key = 4 value = 40
------------------------------
key = 1 value = 10
key = 2 value = 20
key = 3 value = 30
key = 4 value = 40
总结:map中所有元素都是成对出现,插入元素时候要使用对组
33.3map大小和交换
功能描述:
统计map容器大小以及交换map容器
函数原型:
size(); //返回容器元素的数目
empty(); //判断容器是否为空
swap(); //交换两个容器集合
#include
#include
输出结果:
mp1不为空
mp1中元素数目:4
mp1元素:
key = 1 value = 10
key = 2 value = 20
key = 3 value = 30
key = 4 value = 40
mp2元素:
key = 100 value = 1000
key = 200 value = 2000
key = 400 value = 4000
mp1元素:
key = 100 value = 1000
key = 200 value = 2000
key = 400 value = 4000
mp2元素:
key = 1 value = 10
key = 2 value = 20
key = 3 value = 30
key = 4 value = 40
总结:
判断大小--size
判断是否为空--empty
交换容器--swap
33.4map插入和删除
功能描述:
map容器进行插入数据和删除数据
函数原型:
insert(elem); //在容器中插入元素
clear(); //清除所有元素
erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器
erase(beg,end); //删除区间[beg,end)的所有元素,返回下一个元素的迭代器
erase(key); //删除容器中值为key的元素
#include
#include
0
key=1 value=10
key=2 value=20
key=3 value=30
key=4 value=40
key=5 value=50
key=6 value=60
key=7 value=70
key=8 value=80
key=9 value=0
key=1 value=10
key=2 value=20
key=4 value=40
key=5 value=50
key=6 value=60
key=7 value=70
key=8 value=80
key=9 value=0
key=2 value=20
key=4 value=40
key=5 value=50
key=6 value=60
key=7 value=70
key=8 value=80
key=9 value=0
key=2 value=20
s1为空
总结:
map插入方式很多,记住一种即可
插入--insert
删除--erase
清空--clear
33.5map查找和统计
功能描述:
对map容器进行查找数据以及统计数据
函数原型:
find(key); //查找key是否存在,若存在,返回该键的元素迭代器;若不存在返回set.end();
count(key); //统计key的元素个数
#include
#include
总结:
查找--find (返回的是迭代器)
统计--count (对于map,结果为o或者1)
33.6map容器排序
学习目标:map容器默认排序规则为 按照key值进行 从大到小排序,掌握如何改变排序规则
主要技术点:
利用仿函数,改变排序规则
#include
#include
输出结果:
key=5 value=50
key=4 value=40
key=3 value=30
key=2 value=20
key=1 value=10
总结:
利用仿函数可以制定map容器的排序规则
对于自定义数据类型,map必须要指定排序规则,同set容器