C++容器之map

map功能描述

Map(映射)是一种使用频率非常高的关联性容器,具有映射的特点,即存储是按照键-值对的格式来的。由键值对的特性可以将其理解为一种特殊的哈希表,只不过没有散列函数,数据自身就是键。map的最好用的特性是其常数级的查找效率,并且在map这种关联性容器中,存储时将按照一定的顺序对键进行排序,例如数字,默认按照升序排列。在许多算法题中map都起到了非常关键的作用,可以有效解决很多问题。

map初始化

map的初始化不像vector那么灵活,可以有很多种初始化方式,因为是按照键值对存储的,所以定义的时候有两种类型,并且都要赋值。由于有这种键值对的特性,因此C++提供了pair这种数据类型来作为map的基本数据类型,pair完整表示为pair< type T,type T>(T a,T b),以下是常见的初始化方式

map<int,int> num;//定义一个map,里面为空,根据需要进行赋值
map<int,string> num;//定义一个map,数据类型为int和string
map<string,string> num;//定义一个map,数据类型都为string
map< char ,string>charMap;
map<char ,int>charMap;           
map<int ,char >intMap;
//用pair进行插入赋值
map<int,int> num;//先定义空的map;
pair<int,int> v1(1,2);//定义一个元素为(1,2)
pair<int,int> v2(3,4);//定义一个元素为(3,4)
pair<int,int> v3(5,6);//定义一个元素为(5,6)
num.insert(v1);
num.insert(v2);
num.insert(v3);

map操作

map作为一种容器,很多操作和其他的都一样,例如插入用insert,删除用erase,第一个元素可以通过begin()方法调用等,下面列举了一些常见的操作:

begin();//返回指向map头部的迭代器
clear();//删除所有元素
count();//返回指定元素出现的次数
empty();//如果map为空则返回true
end();// 返回指向map末尾的迭代器
erase();// 删除一个元素
find();//查找一个元素
insert() ;//插入元素
max_size() ;//返回可以容纳的最大元素个数
size() ;// 返回map中元素的个数
swap() ;// 交换两个map

map相关的容器unordered_map,multimap

map默认会对存储的键进行排序,并且里面的键不能重复,在某些情况下我们可能不想具有这种默认的安排,例如从一个数组拷贝所有数据,想查看有多少条数据,这时候就必须允许重复,所以C++在后来添加了map的两种扩展版本,一个是可以不排序的版本,即unordered_map,但是仍然不允许键重复。另一个是允许键重复的版本,即multimap,但是会默认排序。map有多种版本,可以供使用者灵活调用,非常方便

map使用

和其他容器一样,使用map必须要声明头文件和命名空间std

#include<map>

map源码

提供一个map源码的链接
https://www.cnblogs.com/blfshiye/p/4068999.html

猜你喜欢

转载自blog.csdn.net/Inthesilence/article/details/107289840
今日推荐