STL学习记录(九)Maps、Multimaps
来源:互联网 发布:湖泊数据下载 编辑:程序博客网 时间:2024/05/20 01:43
STL关联容器Map、Multimap
Map、Multimap容器简介
map、multimap中的元素是以一对key/value值的形式存在。容器中元素的顺序与根据自动排序准则对key值进行排序后的顺序一致。这两个容器的不同之处在于:前者key值必须唯一,不需要出现相同key值;后者则允许相同key值。这表明key值得类型必须是可以进行比较的。在使用这两个容器的时候都必须包含头文件< map >。它们的定义如下:
namespace std{ template <typename Key, typename T, typename Compare = less<Key>, typename Allocator = allocator<pair<const Key,T> > > class map; template <typename Key, typename T, typename Compare = less<Key>, typename Allocator = allocator<pair<const Key,T> > > class multimap; }
上面定义中第一个参数是容器中元素的key值,第二个参数是与key相关联的value值。整个元素的类型为 pair < const Key,T >。第三个可选的参数定义了排序的准则。与set一样排序准则是“strict weak ordering”。这个准则说明如下:
//下面两个参数为key值T key1 = a;T key2 = a;bool tag;if(key1>=key2) tag = true;else tag = false;//tag不是我们平时见到的那样为true,而是false。因为”strict weak ordering”准则中只有大小关系,不存在相等关系//若两者相等返回值也是false
常用类:
迭代器类:
一些特殊的搜索操作:
特有的直接元素访问操作
插入、移除元素:
几种插入操作代码实例:
在支持c++11标准的环境中,最方便的插入操作是使用初始化列表
std::map<std::string,float> coll;...coll.insert({"YourFirst",13.0});
使用value_type进行插入操作。
为了避免隐式类型转换,我们需要使用value_type明确的定义我们插入的元素。
std::map<std::string ,float> coll;...coll.insert(std::map<std::string,float>::value_type("YourFirst",13.0));
使用pair<>进行插入操作
在使用该操作的时候,因为key值不可变也就是const类型对象,所以可能存在隐式类型转换。
std::map<std::string ,float> coll;...//隐式类型转换coll.insert(std::pair<std::string,float>("YourFirst",13.0));//不包含隐式类型转换coll.insert(std::pair<const std::string,float>("YourFirst",13.0));
使用make_pair( )进行插入操作
这是在不支持c++11标准环境中最方便的插入操作
std::map<std::string ,float> coll;...coll.insert(std::make_pair("YourFirst",13.0));
另外,map的insert( )操作与set的类似,操作返回类型包含两个参数,第一个为位置,第二个标识是否插入成功。一个实例:
std::map<std::string ,float> coll;...if(coll.insert(std::make_pair("YourFirst",13.0).second) std::cout<<" OK ,there is no this element before!"<<std::endl;else std::cout<<" fail , this element already exists!"<<std::endl;
0 0
- STL学习记录(九)Maps、Multimaps
- STL容器Maps和Multimaps使用
- maps和multimaps
- C++ Maps & MultiMaps
- C++ Maps & MultiMaps
- 关联式容器:Sets、Multisets、Maps、Multimaps
- MultiMaps
- STL学习记录(一):STL简介
- Maps-STL
- 【Silverlight】Bing Maps学习系列(九):自定义功能导航条(Custom NavigationBar)
- 【Silverlight】Bing Maps学习系列(九):自定义功能导航条(Custom NavigationBar)
- mysql 学习记录(九)--索引、视图
- 无人机驾驶员培训学习记录(九)
- STL学习记录(二):迭代器简要
- STL学习记录(四):Vector
- STL学习记录(五):Deque
- STL学习记录(六):List
- STL学习记录(七):Forward List
- MySQL主从配置,读写分离
- 第十二周项目1——教师兼干部类
- 推荐一个优秀的c++源代码,TinyXml2
- 第十二周项目二——摩托车继承自行车和机动车
- 软考总结
- STL学习记录(九)Maps、Multimaps
- 网络编程的实例
- linux学习笔记—关机与重启命令
- A == B ?
- 关于矩阵的一些基本运算
- STM32高分辨率定时器(HRTIM)使用实例之PWM
- 变量、数组、泛型、集合
- linux 临时增加swap空间
- ISO C89 forbids mixed declarations and code