STL学习之map与multimap

来源:互联网 发布:mac automator 自动化 编辑:程序博客网 时间:2024/05/16 18:46

map:

构造函数:
map<类型1,类型2>m;//默认
map<类型1,类型2>m(m2);//拷贝
map<类型1,类型2>m(first,last);//初始值为迭代器间的值

插入数据:
m=m2;//允许直接拷贝
m[key]=value;//简单
m.insert(make_pair(data1,data2));
m.insert(pair<类型1,类型2>(data1,data2));
m.insert(map<类型1,类型2>::value_type(data1,data2));
插入返回值为pari< iterator,bool> ,其中iterator指向插入位置,bool表示插入是否成功

访问元素:
m[key];
m.at[key];
iterator->second;

查找数据:
auto f=m.find(key);//如果查找到元素则返回相应的迭代器,否则返回end()
m.count(key);//返回值为0或1,1代表key值存在,无法获取位置

删除数据:
m.erase(iterator);//删除迭代器所指的值,如果指向不存在则异常
m.erase(key);//直接删除键值
m.erase(first,last);//删除迭代器间的数据

交换:
m.swap(m2);
swap(m,m2);

容量操作:
m.size();
m.max_size();
m.empty();
m.clear();//清除数据,数据清除后可以访问,但空直接增加空数据
map无法使用sort排序

multimap :
两者基本操作差不多,但multimap不支持数组访问,且可以添加重复key值

插入数据:
不能使用数组形式插入数据,只允许使用insert

访问元素:
只能使用 iterator->second;
无法使用数组

查找数据:
m.count(key);//返回值为键值为key的数量,无法获取位置

其他操作与map一致

0 0
原创粉丝点击