一 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类定义的类型:
(3)map添加元素:
1.通过下标操作符:
使用下标操作符访问map与访问数组和vector截然不同:用下标访问不存在的元素将导致map容器添加一个元素,它的键值为该下标值。
2.map::insert使用:
插入单个参数的insert版本使用key-value pair类型的参数。
对于参数为一对迭代器的版本,迭代器必须指向key-value pair类型的元素。
三 map和multimap相关操作: