《C++ primer(第四版)》读书笔记8-第9章 顺序容器

容器,顺序容器

表示迭代器范围的beg,end,其范围是左闭合区间。end不是指向元素范围的最后一个元素,而是指向最后一个元素的下一位置。
如果两个迭代器相等,则迭代器范围为空
如果vector为空,begin返回的迭代器与end返回的迭代器相同

访问容器的方式:下标,迭代器
所有标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。由于通用性,一般都使用迭代器访问容器,即便对支持下标操作的vector类型也是这样。


各种运行时未定义行为
如果容器为空,迭代器解引用begin()和end()结果未定义。同样,即便容器不为空,解引用end()结果也未定义
由于end操作返回的迭代器不指向任何元素,因此不能对它进行解引用或自增操作
vector下标访问越界

迭代器为所有标准库容器类型所提供的运算
vector和deque容器的迭代器提供额外的运算:算术运算,关系操作符
list提供的是双向迭代器(Bidirectional iterators)。不提供额外运算,因为它的迭代器是用struct实现的。list不像vector一样以普通指针作为迭代器,因为其结点不保证在存储空间中连续存在

vector容量不会缩减

vector不支持push_front操作,因此不能使用front_inserter

todo:
iterator
end自增会出错,为什么?


<<c++标准程序库>>p153
安插元素和删除元素,都会使“作用点”之后的各元素的references、pointers、iterators失效。如果安插操作甚至引发内存重新分配,那么该容器身上的所有references、pointers、iterators都会失效

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值