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存放键,为constiter->second存放值,可以改变

3.      添加元素

insert(e)  epair对象,如果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)        返回mK出现在次数

Count可以用于检查map对象中某键是否存在。

 

5.      删除元素

erase(K)         删除键为K的元素,返回删除元素的个数,size_type

erase(P)          删除迭代器P指向的元素,P必须是确实存在的,返回void

erase(b,e)             删除范围b—e内的元素,返回void类型

 


二.set

map容器是键值对的一一映射,而set容器只是单纯的键的集合

区别:set不支持下标操作,只存储键。

 

 

原创粉丝点击