C++容器4 关联容器

  1. 关联容器的类型

  2. 定义关联容器

  3. pair

  4. 关联容器的类型别名

     set的解引用是常量,

  5. 添加元素

     map和set适合关键字不存在才插入,不会更改关键字的值。你可以随便取出一个元素的值,也可以随便删除,但不能随便修改,因为红黑树也就平衡树的特性决定了修改特别麻烦,改变了值,他们关联的位置也不再有效

  6. 删除元素

     迭代器P指向尾元素是说最后一个元素,它的下一个元素当然就是end

  7. 查找元素  查找元素返回的都是迭代器,换言之,都是指针

     不小于就是大于等于

  8. 无序容器  插入或删除一个元素的时间复杂度是O1,常量非常快

  9. 如何输出末尾不带空格的一组容器元素

     还得是下标 直接其取值恐怕有重复

  10. 如何去重

  11. 为甚莫需要map
    1.   我们可以用数组模拟映射关系,数组下标表示编号,值保存成绩,但是像大学里的学号就要开很大的数组

    2. map就像Python里面万能的字典列表

       有时候也叫关联数组

  12. insert

     将元素添加到末尾——插入迭代器,看起来是迭代器实际上是pushback

  13. 文件流迭代器  不会用

     最大的方便是使输入输出流变成迭代器,也能通用泛型算法,例如copy

  14. 在彻底了解文件流迭代器之前,再探迭代器
    1.  在需要迭代器参数的时候用插入器,插入器构造需要一个容器如vector做底子

    2. 流迭代器的分类

       与前向迭代器不同的是输入输出流是线性易逝的,一次性的,只能迭代一遍,输入了就没了,但是前向迭代器可以反反复复地扫

    3. 容器不是迭代器!容器提供迭代器!
  15. 链表成员操作

     

  16. 空间配置器
    1. 用new分配内存,用delete释放内存?
    2. 移动后,未使用的内存是否应该被构造

       内存的分配和构造应该分离

    3. 内存的一块一块整体分配,如果pop一个元素,是否应该释放一个内存?实际上你根本没办法释放。所以对象析构和内存释放应该分开
    4. new和delete一定区分不开同时
    5. 程序设计者想自己搞一套内存管理办法
    6. 空间配置器就提供这个统一的接口

       被弃用现在参见traits STL源码剖析

       

posted @ 2023-06-06 22:41  SunShine789  阅读(16)  评论(0)    收藏  举报