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

容器map是键-值对的集合,可理解成关联数组,可通过键作为下标获取对应的值
一、map/multimap的定义、初始化
1、定义一个空的映射,默认按照升序排序
map mymap;
2、定义一个按照键值逆序排序的映射
方案一,在类模板中加入仿函数
map> mymap;
方案二,在类的构造函数中加入仿函数
map mymap(greater);
3、用另外一个映射初始化映射
map mymap(elsemap);
4、用另外一个映射的迭代器初始化映射
map 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 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::iterator it1,it2;
 it1=c.find(2);
 it2=c.find(3);
 map::key_compare kc=c.key_comp();
 map::value_compare vc=c.value_comp();
 bool b;
 b=kc(2,3);
 if(vc(*it1,*it2)==true)
 {
  cout<<"(2,hyman)在?3,tom)的?前?面?"<

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

你可能感兴趣的:(STL)