STL vector

原创 2016年03月08日 23:11:29

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容器vector

  • 2015年04月28日 10:30
  • 2KB
  • 下载

《STL系列》之vector原理及实现

  • 2016年11月25日 21:44
  • 48KB
  • 下载

stl源码剖析之vector

我最近在学习c++,看了侯捷的stl源码剖析,我觉得里面的东西有些古老并且有些生涩。比如说alloc,对于一些基础知识不太牢固的同学不是很友好(我建议先细读第二章前4小姐,第一级分配器之后的内容可等基...

stl之vector带注释

  • 2017年07月17日 20:03
  • 30KB
  • 下载

使用STL去除std::vector自定义结构体重复项

最近搞了一个小东西要去除一个vector中重复的项。是这样的:我用组播搜索设备,得到设备IP信息、版本号信息,等,但有时会接收到多个相同IP设备的信息,因此要过滤掉重复的IP。我使用vector存储每...
  • subfate
  • subfate
  • 2016年06月09日 22:31
  • 1595

用gdb来调试对stl的空vector进行操作而产生的core

通过前面的学习, 大家应该很了解gdb调试core了, 今天我们用gdb来调试对stl的空vector进行操作而产生的core.         先不说core, 而是来学学vector的fron...
  • stpeace
  • stpeace
  • 2015年11月15日 09:26
  • 1350

STL vector使用

  • 2014年01月01日 21:25
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL vector
举报原因:
原因补充:

(最多只允许输入30个字)