C++ Primer 笔记7

1、与其他标准库类型不同,对于 pair类,可以直接访问其数据成员:其成员都是公有的,分别命名为first和second。只需使用普通的点操作符,即可访问其成员。
2、除了构造函数,标准库还定义了一个make_pair函数,由传递给它的两个实参生成一个新的pair对象。
3、“关联容器根据键的次序排列”这一事实就是一个重要的结论:在迭代遍历关联容器时,我们可确保按键的顺序访问元素,而与元素在容器中的存放位置完全不关。
4、map容器,对于键类型, 唯一的约束就是必须支持<操作符,至于是否支持其他的关系或相等运算,则不作要求。
map<K, V>::key_type;    map<K, V>::mapped_type;    map<K, V>::value_type;
对迭代器进行解引用将获得一个pair对象,它的first成员存放键,为const,而second成员则存放值。
5、定义了map容器后,下一步的工作就是在容器中添加键-值元素对。该项工作可使用insert成员实现,或者,先用下标操作符获取元素,然后给获取的元素赋值。(使用下标访问map与使用下标访问数组或vector的行为截然不同: 用下标访问不存在的元素将导致在map容器中添加一个新的元素,它的键即为该下标值
6、对于map容器,如果下标所表示的键在容器中不存在,则添加新元素,这一特性可使程序惊人的简练:
  //count number of times each word occurs in the input
  map<string, int> word_cound;
  string word;
  while(cin>>word)
              ++word_count[word];
7、使用insert版本: word_count.insert(map<string, int>::value_type("Anna", 1));//value_type是pair<const k, v>类型的同义词
8、map容器提供了两个操作: countfind,用于检查某个键是否存在而不会插入该键,erase操作用于删除元素。 与其他容器一样,map同样提供begin和end运算,以生成用于遍历整个容器的迭代器。在使用迭代器遍历map容器时,迭代器指向的元素按键的升序排列。(P318例子非常好)
9、map容器时键-值对的集合,相反地,set容器只是单纯的键的集合。例如,某公司可能定义了一个名为bad_checks的set容器,用于记录曾经给本公司发空头支票的客户。 set存储的元素仅仅是键,而没有所关联的值。与map一样,set容器存储的键也必须唯一,而且不能修改。
10、可使用 insert操作在set中添加元素。set容器不提供下标操作符,为了通过键从set中获取元素,可使用find运算。如果只需简单的判断某个元素是否存在,同样可以使用count运算,返回set中该键对应的元素个数。
11、 在multimap和multiset中查找元素: 在multimap和multiset容器中,如果某个键对应多个实例,则这些实例在容器中将相邻存放。 使用 lower_boundupper_bound或 equal_range操作。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值