STL 中 vector 的一些使用方法

看了 《C++标准库》这本书关于 vector 的一章,感觉学到了很多。

1.  reserve()  只会扩充 vector 的 capacity ,而不会缩小它。因此即使删除元素,其 reference, pointer, iterator 也不会失效,但是插入动作(insert)会导致这些成员失效,因为 insert() 会导致 vector 内存的重新分配。

2.  shrink_to_fit() 可以缩减vector没有用的容量,swap 两个 vector 会使它们的 capacity 互换。

3.  assign() 可以像构造函数的参数一样给 vector 重新赋值。

4. vector 提供了很少的越界检查,包括 front(), back(), operator[] 都没有检查,但是 at() 方法会检查越界,并且抛出 out_of_range 异常。

5. vector 迭代器一般持续有效,除非 1) 在较小位置插入或移除元素 2)容量变化引起内存重新分配

6. vector<bool> 是特化版本,提供了  filp()  方法来方便取补。

 

另外,还看到了关于迭代器实现的一个小问题,迭代器可以按照 辅助类 或者 普通指针 来实现,c++规定内置类型的临时变量是不能修改的,而 class 的临时值是可以修改的。这样你能不能用  ++v.begin()  就和具体的实现相关了。

posted on 2017-04-15 17:32  daghlny  阅读(219)  评论(0编辑  收藏  举报

导航