详解map、multimap、unordered_map、unordered_multimap

本文详细介绍了C++ STL中的map、multimap、unordered_map和unordered_multimap,通过实例分析了它们的使用和区别。map实现了键值对的一对一存储,不允许重复键;multimap则允许键值对的一对多存储;unordered_map和unordered_multimap是无序的键值对存储,unordered_multimap同样支持一对多关系,但不保证元素顺序。
摘要由CSDN通过智能技术生成

详解map、multimap、unordered_map、unordered_multimap

相信有不少同学和我一样刚接触C++ STL,被其深深吸引。但是想弄懂每个模板类不是一个容易事。大家应该对vector、list、stack、queue等类比较了解了,所以今天详细介绍下几个很常用很强大但有点不太好懂的类map、multimap、unordered_map、unordered_multimap。乍一看都差不多都是什么map,但这肯定有所不同。下面就在一个一个讲解的同时,让大家了解这四个类的使用,以及不同之处。

map

1)  从一个简单的例子开始

2)      #include<map>

3)      #include<iostream>

4)      using namespace std;

5)       

6)      int main()

7)      {

8)          map<char,int> msi;

9)          //map::operator[]

10)      msi['x'] = 3;

11)      msi['z'] = 3;

12)      msi['g'] = 2;

13)      msi['y'] = 1;

14)      //map::at()

15)      auto beg = msi.begin();

16)      for(; beg !=msi.end();beg++){

17)          cout<<msi.at(beg->first)<<" ";

18)      }

19)      cout<<endl;

20)      return 1;

21)  }

 

结果:

2 3 1 3

代码分析:

l map::operator[]

mapped_type& operator[] (const key_type& k);
mapped_type& operator[] (key_type&& k);

该函数通过调用mak_pair函数将k,v作为一个kv对,在通过insert函数按照k将v插入map中。

l map::at

mapped_type& at (const key_type& k);
const mapped_type& at (const key_type& k) const;
该函数通过k来找到v值。
l  从结果看出,打印是按照k值递增来打印v值的。
2) 从例子1)继续

我们对例子1中的代码进行下修改。

1)      #include<map>

2)      #include<iostream>

3)      using namespace std;

4)       

5)      int main()

6)      {

7)          map<char,int> msi;

8)          //

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值