首页 > 其他分享 >Cxx primer-chap9-Sequential Containers

Cxx primer-chap9-Sequential Containers

时间:2024-07-26 20:24:21浏览次数:27  
标签:容器 迭代 Cxx 元素 list Sequential 类型 操作 primer

  1. 容器就是某种特定类型的集合。容器之间会提供一些公用的接口,此外没有哪种容器是最优的,只有适合的:在这里插入图片描述
  2. sequential 容器类型:在这里插入图片描述
  3. 各个容器的优缺点概览:在这里插入图片描述,其中arrayforward_list是新标准添加的。
  4. 库实现的容器较快,鼓励使用:在这里插入图片描述
  5. 一些经验之谈,其中vector擅长随机访问,list删除随机增删,如果你不确定后续会进行哪些操作,尽量使用vectorlist共通的接口:在这里插入图片描述
  6. 尽管容器的元素类型可以是任何类型,但是有些操作会对元素类型有要求。例如某个没有默认构造器的类无法使用只提供元素数量的容器构造器:在这里插入图片描述
  7. 迭代器是容器访问元素的通用方式:在这里插入图片描述
  8. 为什么迭代器类型是left-inclusive ranges在这里插入图片描述
  9. 容器中定义的类型成员:在这里插入图片描述
  10. 惊讶的是,有两个版本的begin在这里插入图片描述
  11. 使用默认构造器是,除了array,容器为空,不要以为它初始时会自动预留空间:在这里插入图片描述
  12. 用其他容器来初始化新容器的两种方式:在这里插入图片描述
  13. 简单认为,array就是内置数组的安全版本:在这里插入图片描述,因为它们的初始化方式都十分相似:在这里插入图片描述
  14. 容器的关系操作符是建立在元素类型的关系运算符基础上,如果该元素类型不支持关系比较,则容器也不支持:在这里插入图片描述,具体而言就是元素类型的==<在这里插入图片描述,注意unordered associative containers不支持比较运算,相等判断可以。
  15. 顺序容器涉及的添加元素操作:在这里插入图片描述
  16. push_backpush_front只是在容器的两端进行插入,而insert是更泛化的形式:在这里插入图片描述
  17. push操作会发生拷贝,而emplace_front()emplace()emplace_back()直接在目标内存位置调用元素类型的构造函数:在这里插入图片描述
  18. 对于顺序容器的删除操作,我们需要保证该元素存在:在这里插入图片描述
  19. 改变容器中元素的数量:在这里插入图片描述
  20. 对于容器的增删操作会使迭代器、引用和指针失效:在这里插入图片描述,建议的操作是要及时更新相应的迭代器:在这里插入图片描述,例如因为end()经常失效,所以应该避免存储end()在这里插入图片描述
  21. 对于vector而言,它的内存是如何增加的:在这里插入图片描述,具体而言,就是想尽办法减少分配内存的操作次数:在这里插入图片描述,容器提供了一些涉及内存容量的接口:在这里插入图片描述,至于capacity()中过剩容量的具体细节,取决于实现方式:在这里插入图片描述
  22. string library而言,提供一些操作无非就是兼容C风格的字符数组,个人感觉有意思的是子串搜索和匹配操作:在这里插入图片描述
  23. 顺序容器包装的容器适配器:在这里插入图片描述其中默认情况下:在这里插入图片描述

标签:容器,迭代,Cxx,元素,list,Sequential,类型,操作,primer
From: https://blog.csdn.net/qq_43656353/article/details/140722126

相关文章