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

STL vector<bool>总结

这里是vector的总结,详细原文可看后面链接。 class template specialization std::vector template > class ve...

stl之vector带注释

  • 2017-07-17 20:03
  • 30KB
  • 下载

STL-模拟实现vector(含类型萃取)

1.类型萃取 //类型萃取 struct TrueType { bool Get() { return true; } }; struct FalseType { bool Ge...

STL vector用法介绍

介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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