[C++::STL]之map的用法
程序员文章站
2022-06-24 20:18:02
map
#include< map > 映射,键值对容器。
map就是从键(key)到值(value)的映射。因为重载了 [ ] 运算符,map更像是数组的“高级版&rdqu...
map
#include< map > 映射,键值对容器。
map就是从键(key)到值(value)的映射。因为重载了 [ ] 运算符,map更像是数组的“高级版”。例如可以用一个map< string,int>month_name来表示“月份名字到月份编号”的映射,然后用 month_name[“july”]=7 这样的方式来赋值。
类似于python中的字典dictionary与java中的treemap。
所有元素会根据key值排序(默认升序,如果键值为字符串就是字典序),map中的所有元素都是pair,同时拥有实值和键值,pair的first为键值,second为实值,底层将它的first作为红黑树的排序key。
map不允许有两个相同键值的元素。map的迭代器不能修改键值,但可以修改实值。主要用于处理带有键值的记录性元素数据的快速插入、删除和检索。
创建map对象
map m;插入和访问
(访问时如果map中不存在该键值,实值为空,对于数字则为0,字符串则为空串。)
m["jack"]=98.5; cout< 遍历map::iterator it; for(it=m.begin();it!=m.end();it++) cout<<(*it).first<<":"<<(*it).second< 删除//通过键值删除 m.erase("jack"); //清空 m.clear();还有一种方法是遍历删除,既可以通过键值,也可以通过实值,不过由于迭代器的属性,这种方法不注意的话很容易出错。
查找
使用键值进行查找操作。大多数情况直接用键值访问就行了,很少用到下面的m.find()searches the container for an element with a key equivalent to k and returns an iterator to if found,otherwise it returns an iterator to map::end
1.用find函数来定位键值出现位置,它返回的一个迭代器,当键值出现时,它返回所在位置的迭代器,如果map中没有要查找的键值,它返回的迭代器等于end函数返回的迭代器
map::iterator it; it=m.find("jack"); cout<<(*it).first<<":"<<(*it).second<,double>2.用count函数来判定键值是否出现,count函数的返回值只有两个,键值出现返回1,否则返回0
if(m.count("jack")) cout<<"found"< poj 1008:maya calendar (模拟);>,double>
推荐阅读
-
Java实现Map集合遍历的四种常见方式与用法分析
-
mybatis动态sql之Map参数的讲解
-
Android编程UI设计之GridView和ImageView的用法
-
Java实现Map集合遍历的四种常见方式与用法分析
-
深入C++ typedef的用法总结(必看)
-
在ASP.NET 2.0中操作数据之六十:创建一个自定义的Database-Driven Site Map Provider
-
深入C++ typedef的用法总结(必看)
-
在ASP.NET 2.0中操作数据之六十:创建一个自定义的Database-Driven Site Map Provider
-
深入C++ string.find()函数的用法总结
-
Android自定义view Path 的高级用法之搜索按钮动画