《c++ primer》第 10 章 关联容器

概论

关联容器与顺序容器的本质差别:关联容器通过键(key)存储和读取元素,而顺序容器通过元素在容器中的位置顺序访问和存储元素

引言 pair类型

  1. 在utility中定义
  2. 生成pair对象make_pair  map<stirng,int>word;word.insert(make_pair("abc",1))
  3. 在返回一对值的时候,可以考虑使用,例如返回最小最大值

关联容器

  1. 区别于顺序容器,关联容器不提供front,push_front,push_back操作
  2. 不能定义关联容器的大小

MAP类型

  1. 头文件map
  2. 键类型必须定义<,并且必须能正确工作,因为当用迭代器遍历字典的时候,会将其按照键的大小输出,而不是按照插入顺序
  3. map<K,V>::key_type是索引的键的类型,map<K,V>::mapped_type是键类型,map<K,V>::value_type是pair类型,第一个成员是键类型const,不能修改
  4. 给map添加元素,两种方法:1.insert  2使用下标赋值
  5. 用下标访问不存在的元素会导致在map容器中添加一个新元素,所关联的值:类类型使用默认构造函数,而内置类型初始化为0
    //记录每个单词出现的次数
    map<string,int>word_count;
    string word;
    while(cin >> word)
      ++word_count[word];

  6. map::insert的返回类型很有趣,输入参数一般为pair类型
  7. 带有pair类型的insert的返回值是pair类型的,pair<迭代器类型,布尔值>
  8. 查找并读取map中的元素,count和find函数
  9. 从map中删除元素,区别于顺序迭代器,它的返回值是void

SET类型

  1. SET容器中只是单纯的键的集合。它不支持下标操作,没有定义mapped_value类型。在set容器中,value_type不是pair类型,而是与key_type相同的类型
  2. 获得set元素的迭代器后,只能对其进行读操作,而不能写操作,const

multimap和multiset类型

  1. 允许一个键对应多个实例,但是multimap不支持下标运算。
  2. 如果某个键对应多个实例,那么它将相邻排放。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值