STL容器-关联式容器map/multimap

容器map是键-值对的集合,可理解成关联数组,可通过键作为下标获取对应的值
一、map/multimap的定义、初始化
1、定义一个空的映射,默认按照升序排序
map<int,string> mymap;
2、定义一个按照键值逆序排序的映射
方案一,在类模板中加入仿函数
map<int,string,greater<int>> mymap;
方案二,在类的构造函数中加入仿函数
map<int,string> mymap(greater<int>);
3、用另外一个映射初始化映射
map<int,string> mymap(elsemap);
4、用另外一个映射的迭代器初始化映射
map<int,string> mymap(elsemap.begin(),elsemap.end());

二、map的容量
1、返回映射的大小
mymap.size();
2、返回映射的最大容量
mymap.max_size();
3、判空函数
mymap.empty();

三、迭代器
1、正向迭代器
mymap.begin()/mymap.end()
2、反向迭代器
mymap.rbegin()/mymap.rend()

四、元素的插入和删除
1、插入
mymap.insert(pair(key,value));//返回pair(iterator,bool)
mymap.insert(iterator,pair(key,value));//在迭代器的指示位置插入
mymap.insert(elsemap.begin(),elsemap.end());//插入elsemap的迭代器标示的一段元素
2、清除
mymap.erase(...);
3、清空
mymap.clear();
4、修改
key可作为map的下标直接读取或修改 mymap[10]="Hyman";

五、元素交换函数
mymap.swap(elsemap);

六、元素的个数统计、查找元素和元素的随机访问
1、统计
mymap.count(key);//返回key值对应的元素在映射中出现的次数
2、查找
返回键值对应的迭代器 mymap.find(key);
返回大于或者等于key的第一个元素的迭代器 mymap.lower_bound(key);
返回大于键值key的第一个元素的迭代器 mymap.upper_bound(key);

返回大于等于键值key的第一个元素和大于键值key的第一个元素组成的pair mymap.equal_range(key);


七、元素大小的比较
1、键值大小比较
mymap.key_comp();//返回为key_compare()类型
2、实值大小比较

mymap.value_comp();//返回为value_compare()类型

源代码:
#include "stdafx.h"
#include "iostream"
#include "map"
#include "string"
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
 map<int,string> c;
 c.insert(make_pair(2,"hyman"));
 c.insert(make_pair(3,"tom"));
 c.insert(c.begin(),make_pair(4,"jim"));
 c.insert(c.end(),make_pair(1,"lili"));
 map<int,string>::iterator it1,it2;
 it1=c.find(2);
 it2=c.find(3);
 map<int,string>::key_compare kc=c.key_comp();
 map<int,string>::value_compare vc=c.value_comp();
 bool b;
 b=kc(2,3);
 if(vc(*it1,*it2)==true)
 {
  cout<<"(2,hyman)在?3,tom)的?前?面?"<<endl;
 }
 else
 {
  cout<<"(2,hyman)在?3,tom)的?后?面?"<<endl;
 }
 system("pause");
 return 0;
}

八 获取内存分配器
std::map<int,string>::allocator_type m_allocator = mymap.get_allocator();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值