STL容器之关联容器
来源:互联网 发布:hp m1213nf 网络扫描 编辑:程序博客网 时间:2024/05/06 13:23
关联容器:支持通过键来高效地查找和读取元素。
主要的关联容器有:set , map ,multimap, multiset
关联容器共享大部分顺序容器的操作,不提供的操作为:
front , push _front, push_back , pop_front , pop_back,assign , resize操作
共它操作也重新定义了含义和返回值,因为关联容器中使用了键。
“容器元素根据键的次序排列”,在迭代器遍历关联容器时,我们可以确保按键的顺序访问元素,而与元素在容器中的存放位置完全无关。
一.map
map可以理解为关联数组,也可以叫作映射。因为键值对一一映射的关系
map<K,V> m;在构造对象时,一定要指明键和值的类型
map提供了三种类型:
key_type: 键的类型
mapped_type: 值的类型
value_type: pair类型
1. 键类型的约束
键不但有一个类型,还有一个相关的比较函数,默认情况下,使用 <操作符来实现键的比较。
对于键类型,唯一的约束就是必须支持 <操作符。
2. map迭代器进行解引用将产生pair类型对象
pair类型:#include <utility>
对pair可以直接访问其成员,first,second;其成员是公有的。
map<K, V> m; //必须提供二个类型名
map<K , V>::iterator iter = m.begin();
iter->first存放键,为const;iter->second存放值,可以改变
3. 添加元素
insert(e) e是pair对象,如果e.first不存在相同,则添加新元素e.second,返回bool
insert(beg,end) 添加beg---end范围间的不相同键的元素,返回void
insert(iter ,e) 以迭代器iter为起点搜索新元素存储的位置,并返回一个迭代器,指向该元素
例:map<K,V> m;
1.m.insert(map<K,V>::value_type(K,V));
2.m.insert(make_pair(K,V));
3,下标: m[K] = “hello
在使用下标访问使程序可以非常简练。
4. 查找并读取map中的元
find(K) 存在K为键的元素,返回迭代器,不存在返回超出未端迭代器
count(K) 返回m中K出现在次数
Count可以用于检查map对象中某键是否存在。
5. 删除元素
erase(K) 删除键为K的元素,返回删除元素的个数,size_type
erase(P) 删除迭代器P指向的元素,P必须是确实存在的,返回void
erase(b,e) 删除范围b—e内的元素,返回void类型
二.set
map容器是键值对的一一映射,而set容器只是单纯的键的集合
区别:set不支持下标操作,只存储键。
- STL容器之关联容器
- STL容器之关联容器
- STL 之关联容器
- STL之关联容器
- STL之关联容器--Fwd
- STL之关联式容器
- STL之MAP关联容器
- STL关联容器之Map
- STL 之 map 关联容器
- 初探STL之关联容器
- STL关联容器之set
- STL关联容器之map
- 【STL】STL之顺序容器和关联容器总结
- STL容器--关联容器map
- STL 顺序容器,关联容器
- STL容器:序列容器关联容器
- stl之关联容器学习笔记1
- stl之关联容器学习笔记2
- Ubuntu下安装和配置Apache2
- 编程:extern 用法 C、C++
- 确定wifi网卡是否支持hostap
- uml 用例图
- TPS
- STL容器之关联容器
- iphone ios MPMoviePlayerController在ios 6 模拟器中无法播放
- 关于LFH堆 .
- c#标准注释
- 浅谈Java泛型中的extends和super关键字
- 一个dshow filter的code心得。很简单,但写的还不错
- 企业网站建设需要注意的事
- 编程中常用的一些小工具及说明
- vim的配置文件在哪?