STL vector

STL 最常见使用最多的是vector,它能容纳任何数据类型,因为它是模板实现,所以自定义的结构体,也是可行。内部实现是以数组形式,所以开辟的内存空间是连续的,并且vector中operator了[]符号,可以像数组一样访问数据。但是需要注意的是,这不是安全的,加入超过了vector的实际长度空间,那么取的值就是异常值,解决方法是使用at函数取值,越界会报异常out_of_range。
vector的优势在于其动态分配内存,如果当前需要添加一个元素,那么调用push_back(element)即可。

//构造函数
vector();
vector( size_type num, const TYPE &val ); //n个相同值的vector
vector( const vector &from );             //拷贝构造函数
vector( input_iterator start, input_iterator end ); //迭代器构造函数

//迭代器
iterator begin(); //vector第一个元素的迭代器
iterator end(); //vector末尾的迭代器,注意这里实际是最后一个元素向后移动一个单位的迭代器

//图片来自http://www.cnblogs.com/dawen/archive/2010/10/02/1841125.html
这里写图片描述

//分配函数
void assign( input_iterator start, input_iterator end );
void assign( size_type num, const TYPE &val );

//首尾元素的引用
TYPE front();
TYPE back();

size_type size();      //当前vector元素数目
size_type capacity(); //返回当前vector在重新进行内存分配以前所能容纳的元素数量

//删作指定位置loc的元素,要么删除区间[start, end)的所有元素.返回值是指向删除的最后一个元素的下一位置的迭代器.如果不以左值得方式赋值,那么当前的迭代器就是一个野指针。
iterator erase( iterator loc );
iterator erase( iterator start, iterator end );

//get_allocator() 函数返回当前vector的内存分配器.在STL里面一般不会调用new或者alloc来分配内存,而且通过一个allocator对象的相关方法来分配.
allocator_type get_allocator();

//reserve()函数为当前vector预留至少共容纳size个元素的空间.(译注:实际空间可能大于size)
void reserve( size_type size );

resize()和reserve的区别:

  1. reserve()容器预留空间,并没有实际元素创建对象;
  2. resize()是改变容器大小,并且创建对象,可以初始元素的默认值。

【参考资料】
【1】http://www.cnblogs.com/dawen/archive/2010/10/02/1841125.html
【2】http://blog.csdn.net/l_andy/article/details/39050837

阅读更多
个人分类: stl
上一篇C++ mutable
下一篇STL set
想对作者说点什么? 我来说一句

STL vector 知识详解

2010年09月26日 31KB 下载

没有更多推荐了,返回首页

关闭
关闭