
vector使用方法.doc
9页标准模板库(STL)学习探究之 vector 容器 收藏 C++ Vectorsvector 是 C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库vector 之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector 是一个能够存放任意类型的动态数组,能够增加和压缩数据为了可以使用 vector,必须在你的头文件中包含下面的代码:#include 构造函数Vectors 包含着一系列连续存储的元素,其行为和数组类似访问 Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在 Vector 中插入元素则是线性时间复杂度函数列表如下:Constructors 构造函数 Operators 对 vector 进行赋值或比较 assign() 对 Vector 中的元素赋值 at() 返回指定位置的元素 back() 返回最末一个元素 begin() 返回第一个元素的迭代器 capacity() 返回 vector 所能容纳的元素数量(在不重新分配内存的情况下) clear() 清空所有元素 empty() 判断 Vector 是否为空(返回 true 时为空) end() 返回最末元素的迭代器(译注:实指向最末元素的下一个位置) erase() 删除指定元素 front() 返回第一个元素 get_allocator() 返回 vector 的内存分配器 insert() 插入元素到 Vector 中 max_size() 返回 Vector 所能容纳元素的最大数量(上限) pop_back() 移除最后一个元素 push_back() 在 Vector 最后添加一个元素 rbegin() 返回 Vector 尾部的逆迭代器 rend() 返回 Vector 起始的逆迭代器 reserve() 设置 Vector 最小的元素容纳数量 resize() 改变 Vector 元素数量的大小 size() 返回 Vector 元素数量的大小 swap() 交换两个 Vector/////////////////////////////////////////////////////////////////////////////////////函数详细说明构造函数语法: vector();vector( size_type num, const TYPE &val );vector( const vector &from );vector( input_iterator start, input_iterator end );C++ Vectors 可以使用以下任意一种参数方式构造: 无参数 - 构造一个空的 vector, 数量(num)和值(val) - 构造一个初始放入 num 个值为 val 的元素的 Vector vector(from) - 构造一个与 vector from 相同的 vector 迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间元素的Vector(注:半开区间). 举例,下面这个实例构造了一个包含 5 个值为 42 的元素的 Vectorvector v1( 5, 42 );运算符语法: v1 == v2v1 != v2v1 = v2v1 v2 v[]C++ Vectors 能够使用标准运算符: ==, !=, =, . 要访问 vector中的某特定位置的元素可以使用 [] 操作符. 两个 vectors 被认为是相等的,如果: 它们具有相同的容量 所有相同位置的元素相等. vectors 之间大小的比较是按照词典规则. assign 函数 语法: void assign( input_iterator start, input_iterator end );void assign( size_type num, const TYPE &val );assign() 函数要么将区间[start, end)的元素赋到当前 vector,或者赋 num 个值为 val 的元素到 vector 中.这个函数将会清除掉为 vector 赋值以前的内容.at 函数 语法: TYPE at( size_type loc );at() 函数 返回当前 Vector 指定位置 loc 的元素的引用. at() 函数 比 [] 运算符更加安全, 因为它不会让你去访问到 Vector 内越界的元素. 例如, 考虑下面的代码:vector v( 5, 1 );for( int i = 0; i v( 5, 1 );for( int i = 0; i v;for( int i = 0; i v1( 5, 789 );vector::iterator it;for( it = v1.begin(); it != v1.end(); it++ )cout v;for( int i = 0; i alphaVector;for( int i=0; i ::iterator startIterator;vector::iterator tempIterator;for( int i=0; i v3( 3, 1, v2.get_allocator( ));//把 V2 的内存分配器作为一个参数参与构造 V3。
这样,它们两个用一个内存分配器了insert 函数 语法: iterator insert( iterator loc, const TYPE &val );void insert( iterator loc, size_type num, const TYPE &val );void insert( iterator loc, input_iterator start, input_iterator end );insert() 函数有以下三种用法: 在指定位置 loc 前插入值为 val 的元素,返回指向这个元素的迭代器, 在指定位置 loc 前插入 num 个值为 val 的元素 在指定位置 loc 前插入区间[start, end)的所有元素 . 举例: //创建一个 vector,置入字母表的前十个字符vector alphaVector;for( int i=0; i ::iterator theIterator = alphaVector.begin();alphaVector.insert( theIterator, 4, 'C' );//显示 vector 的内容for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++ )cout alphaVector;for( int i=0; i ::iterator theIterator;for( int i=0; i v1;for(int i=1;i::reverse_iterator pos;pos=v1.rbegin();coutv1;for(int i=1;i::reverse_iterator pos;pos=v1.rend();pos--;cout#includeusing namespace std;void main(){vectorv1;for(int i=1;i4,此时不能用[]访问元素 }coutv1,v2;for(int i=1;i<=3;i++){v1.push_back(i);v2.push_back(i);}v2.push_back(4);v2.push_back(5);v1.swap(v2);for(int j=0;j












