关联容器——map

在督导系统的时候看到笃海师兄写一个三级窗口的时候用到了map,运用了map读取表格数据还加以统计然后根据表的字段的多少在生成的窗口中相应生成labal和edit框,这样写很灵活而且适用在不同的表格或系统中。在看代码的过程中发现自己对map的了解还是很有限的,今天看了一下,做了一些笔记。


1、关联容器支持通过键来高效地查找和读取元素。两个基本的关联容器类型是map和set。map的元素以键—值对的形式组织,键用作元素在map中索引,而值则表示所存储和读取的数据,set仅包含一个键。


2、set和map类型的对象所包含的元素都具有不同的键,不允许为同一个键添加第二个元素。如果一个件必须对应多个实例,则需要使用multimap或multiset类型。

3、在创建pair对象是,必须提供两个类型名,pair对象多包含的两个数据成员各自对应的类型名,这两个类型不比相同。如果在创建pair对象时不提供初始化式,,则调用默认构造函数对其成员采用值初始化。

4.与其他标准库类型不同,对于pair类,可以直接访问其数据成员,其成员都是公有的,分别命名为first和second,只需要使用普通的点操作符。

5、关联容器不提供front,push_front、pop_front、back、push_back以及pop_back操作。

map类型

当用一个键与自身比较时,肯定会导致false结果。

6、value_type是pair类型,它的值成员可以修改,但键成员不能修改。
key是const。

7、map类额外定义了两种类型,key_type和mapped_type,以获得键或值的类型,可使用作用域操作符来获取类成员,如map<string,int>::key_type。

8、使用下标访问map与使用下标访问数组或vector的行为截然不同:用下标访问不存在的元素将导致在map容器中添加一个新的元素,它的键即为该下标值。

9、有别于vector或string类型,map下标操作符返回的类型与对map迭代器进行解应用获得的类型不相同。map迭代器返回value_type类型的值————包含const_type和mapped_type类型成员的pair 对象:下标操作符则返回一个mapped_type类型的值。

10、以insert代替下标运算
word_count.insert(map<string, int>::value_type("Anna",1));
传递给insert的实参相当笨拙,可用两种方法简化:使用make_pair
word_count.insert(make_pair("Anna",1));
或使用typedef:
typedef map<string,int>::value_type valType;
word_count.insert(valType("Anna",1));

11、map对象中一个给定键只对应一个元素。如果试图插入的元素所对应的键已在容器中,则insert酱不做任何操作。

12、map容器的earse操作返回void,而顺序容器的erase操作则返回一个迭代器,指向被删除元素后面的元素。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值