三 关联式容器(二)map和multimap

时间:2022-05-29 20:50:34

一 pair类型:

(1)pair对象的创建和初始化:

pair是一种模板类。

1.创建pair时必须提供两个类型名:pair对象所包含的两个数据成员各自对应的类型名字,这两个类型不必相同。

例如:pair<int,string>p(28,"James")

如果不提供初始化式,则调用默认构造函数对其成员采用值初始化。可用typedef简化。

2.除了构造函数之外,标准库还定义了一个make_pair函数,由传递给它的两个实参生成一个新的pair对象。

如:pair<int,string> p1=make_pair(34,"one")。

3.pair对象的操作:

可以直接访问pair类的数据成员:其成员都是公有的,分别命名为first和second。(使用点操作符(.))

4.对map类型进行解引用(*)将产生pair类型的对象。


二 map类型:

map是键-值对的集合。map类型通常可理解为关联数组。


(1)map的特性:

*根据所有元素的键值自动被排序。

*所有元素都是pair类型,同时拥有键值(key)和实值(value)。pair的第一个元素是键值,第二个元素为实值。

*map不允许有两个相同键值的元素存在,multimap则允许。

*通过map的迭代器,不能修改元素键值,可以修改元素的实值。

*对map进行增加和删除操作时,操作之前的所有迭代器有效,除了被删除元素的迭代器。

*map的value_type是pair类型,而且键为const,值成员可以改变,但键成员不可以改变。

*通常关联式容器不提供元素的直接存取,必须依靠迭代器。不过,map是个例外。Non-const maps提供下表操作符,支持元素的随机存取。


(2)map类定义的类型:

三 关联式容器(二)map和multimap

(3)map添加元素:


1.通过下标操作符:

使用下标操作符访问map与访问数组和vector截然不同:用下标访问不存在的元素将导致map容器添加一个元素,它的键值为该下标值。

三 关联式容器(二)map和multimap

2.map::insert使用:

插入单个参数的insert版本使用key-value pair类型的参数。

对于参数为一对迭代器的版本,迭代器必须指向key-value pair类型的元素。

三 关联式容器(二)map和multimap

三  map和multimap相关操作:

三 关联式容器(二)map和multimap三 关联式容器(二)map和multimap三 关联式容器(二)map和multimap三 关联式容器(二)map和multimap三 关联式容器(二)map和multimap三 关联式容器(二)map和multimap三 关联式容器(二)map和multimap