关闭

STL vector

149人阅读 评论(0) 收藏 举报
分类:

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

0
0

猜你在找
深度学习基础与TensorFlow实践
【在线峰会】前端开发重点难点技术剖析与创新实践
【在线峰会】一天掌握物联网全栈开发之道
【在线峰会】如何高质高效的进行Android技术开发
机器学习40天精英计划
Python数据挖掘与分析速成班
微信小程序开发实战
JFinal极速开发企业实战
备战2017软考 系统集成项目管理工程师 学习套餐
Python大型网络爬虫项目开发实战(全套)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5319次
    • 积分:305
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类