容器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);
1、键值大小比较
mymap.key_comp();//返回为key_compare()类型
2、实值大小比较
八 获取内存分配器
std::map<int,string>::allocator_type m_allocator = mymap.get_allocator();
一、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();