C++学习笔记【第二部分第九章:顺序容器】

顺序容器

  1. C++程序应该使用标准库容器,而不是更原始的数据结构如内置数组
  2. 通常,使用vector是最好的选择,除非有很好的理由选择其他容器
  3. 顺序容器类型
    ● vector,可变大小数组,快速随机访问,尾部插入删除快
    ● deque,双端队列,快速随机访问,头尾插入删除快
    ● list,双向链表,双向顺序访问,任何位置插入删除快
    ● forward_list,单向链表,单向顺序访问,任何位置插入删除快
    ● string,与vector类似,专门存储字符,快速随机访问,尾部插入删除快
  4. 选择容器的基本原则,p293
  5. 容器迭代器支持的所有操作:P56
    ● *iter
    ● iter->mem
    ● ++iter
    ● --iter
    ● iter1 == iter2
    ● iter1 != iter2
  6. forward_list不支持–iter
  7. 迭代器支持的运算:这些运算只用于string、vector、deque、array的迭代器。
  8. 迭代器begin和end必须指向相同的容器,end不能指向begin之前的位置
  9. 迭代器范围是左闭合区间
  10. 当不需要写访问时,应该使用cbegin 和cend。
  11. 使用一个容器来初始化另一个容器的时候,两容器的类型与元素类型必须完全匹配。使用迭代器参数来初始化容器时则无需匹配
  12. 只有顺序容器的构造函数接受大小参数,关联容器不接受
  13. 使用array类型,必须同时指定元素类型和大小
  14. 内置数组不支持拷贝或赋值。P102
  15. array也是标准库的,与数组的区别:可以拷贝或者赋值
  16. array类型不支持assign,也不允许用花括号包围的值列表进行赋值。
  17. 给array类型赋值,赋值号左右两边的运算对象必须具有相同的类型
  18. swap的速度比拷贝快
  19. assign操作不适用于array和关联容器
  20. array的大小固定,所以不能动态添加删除元素
  21. forward_list不支持push_back & emplace_back
  22. vector & string 不支持push_front & emplace_front
  23. 向一个vector、string、deque插入元素会使所有指向容器的迭代器、指针、引用失效
  24. 容器元素是拷贝
  25. 将元素插入到vector、string、deque是合法的,但是这样做很耗时
  26. insert返回指向新添加的元素的迭代器
  27. emplace函数在容器中直接构造元素,传递给emplace函数的参数必须与元素类型的构造函数匹配(push,insert都是拷贝,创建临时对象,压入容器)
  28. 对于一个空容器使用front和back,就像使用一个越界的下标一样
  29. 如果希望确保下标合法,可以使用at成员函数,如果下标越界,会抛出out_of_range的异常
  30. 每次改变容器的操作之后都必须重新定位迭代器
  31. 如果在一个循环中插入、删除deque、string或者vector中的元素,不要缓存end返回的迭代器,因为每次插入删除操作都会使得它失效
  32. 每个vector都有自己的内存分配策略,但必须遵守的原则是:只有在迫不得已的情况下才重新分配内存
  33. 修改string的操作。P323
  34. C风格字符串的函数:strlen,strcmp,strcat,strcpy。传入此类函数的指针必须指向以空字符作为结束的数组
    容器适配器
  35. 除了顺序容器外,标准库还定义了三个顺序容器适配器:stack, queue,priority_queue。
  36. P330,一个错误。表9.19中,q.pop(),表示删除queue的首元素或priority_queue的最高优先级的元素,但不返回此元素。
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值