顺序容器和数组的功能类似,是诸多元素的集合。
包括vector,list,deque(读音同deck:甲板)。其中vector类似数组,list类似链表,deque类似双端队列,可以在它的两端进行添加、删除元素,这就导致了这货和list可以用push_front()和pop_front()函数。不过没关系,这两个函数都可以用insert()和erase()实现。
这章我认为有3个值得注意的地方:
1.list容器的迭代器不支持算术和比较运算
list<int>::iterator first=ilst.begin(),
last=ilst.end();
然后有如下循环 while(first < last) //这是错误的
2.容器的begin和end的迭代器范围是左闭右开的, 也就是[begin,end)。
end指向的是末端元素的后一位置,这样做有两个编程意义。
1.可以用 begin==end 来判断容器是否为空
2.begin!=end 来判断容器至少还有一个元素
这和我们数据机构中的环形队列是否有异曲同工之妙
3.尽量避免保存end()返回的迭代器的值,因为,容器添加或者删除元素时,迭代器可能是会失效的,所以我们要做到时刻更新容器end()的值