Skip to content

Latest commit

 

History

History
88 lines (48 loc) · 2.7 KB

关联容器.md

File metadata and controls

88 lines (48 loc) · 2.7 KB

Table of Contents generated with DocToc

map和set是两个基本的关联容器。map以键-值的形式组织,键用作索引,值表示所存储和读取的数据。set仅包含一个键,并有效支持关于某个键是否存在的查询。

set和map包含的元素都具有不同的键,不允许为同一个键添加第二个元素。如需要,可以使用multimap和multiset。

 

pair类型

pair类型在utility头文件中定义。

pair类的数据成员是公有的,分别为firstsecond

 

关联容器

关联容器共享大部分的顺序容器操作,但不包括front、push_front、 pop_front、 back、 push_back、 pop_back。

关联容器不能通过容器大小来定义。

容器元素按照键的次序来排列。

 

map

要使用map,必须包含map头文件,定义map对象时,必须分别指明键和值的类型,在实际应用中,键类型必须定义<操作。

用作索引的键的类型(string):map<k, v>::key_value。

键所关联的值的类型(int):map<k, v>::mapped_value。

一个pair类型:map<k, v>::value_type。

map迭代器进行解引用时产生pair类型的对象。

给map添加元素:insert,或者下标取元素,然后赋值。

Attention:用下标访问不存在的元素,将导致map添加一个新元素,键即为下标值。

下标操作符返回左值,是特定键所关联的值,而不是pair类型。

count检查map对象中某键是否存储。

find读取元素又不插入元素,如果元素不存在,返回end迭代器。

map对象中删除元素:erase。

 

set

set支持大部分的map操作,但不支持下标,且没有定义mapped_type类型,value_type也不是pair类型,而是与key_type相同的类型。

与map一样,set存储的键也必须唯一,且不能修改。

set中添加元素:insert。

获取元素:find或者count。

 

multimap和multiset

两者支持的操作分别和map与set相同,除了multimap不支持下标。

它们还提供了与众不同的面向迭代器的解决方案:lower_bound,upper_bound,equal_range。

导航

目录

上一章:9. 顺序容器

下一章:[11. 泛型算法](11. 泛型算法.md)