map:hash映射,提供key和value,实现一对一的映射
①头文件:#include
②使用方法:map Map;
③实现方法:map用红黑树实现,map先按照type1升序排序,再按type2升序排序。因此map是有序的,无须对map进行排序
④通过key找到value,key唯一,value不唯一
⑤unordered_map 无序map
无序map 插入和删除的时间复杂度为O(1),比普通map快
如果用map超时且不需要有序可以考虑无序map
unordered_map 在C++ 11 才可以用,否则会编译出错
⑥map的常用方法:
begin() 返回指向map头部的迭代器
end() 返回指向map末尾的迭代器
find() 查找一个元素
erase() 删除一个元素
insert() 插入元素
clear() 删除所有元素
empty() 如果map为空则返回true
size() 返回map中元素的个数
swap() 交换两个map
count() 返回指定元素出现的次数
例:
map mapStudent ;
①插入数据:insert()
//用pair向map插入数据//可typedef pair P; 简化操作
mapmapStudent;
mapStudent.insert(pair(1,"student_one"));
mapStudent.insert(pair(2,"student_two"));
mapStudent.insert(pair(3,"student_three"));
②查找数据:find()返回key所在的位置,返回的是迭代器;若key不存在返回最后一个元素的位置
map::iterator iter ; //定义迭代器
iter = mapStudent.find(1); //返回key=1的元素所在的位置给iter
if(iter !=mapStudent.end())
cout<second<
③删除数据:erase()提供用key删除元素或用迭代器删除,也可用迭代器范围删除区间元素
//erase()提供三种方法//用迭代器刪除元素
iter = mapStudent.find("1");
mapStudent.erase(iter);//用关键字刪除,删除成功返回1,否则返回0
int n = mapStudent.erase("1");//用迭代器范围刪除 : 把整个map清空
mapStudent.erase(mapStudent.begin(), mapStudent.end());