verctor vector类似于C语言中的数组,它维护一段连续的内存空间,具有固定的起始地址,因而能非常方便地进行随机存取,即 [] 操作符,但因为它的内存区域是连续的,所以在它中间插入或删除某个元素,需要复制并移动现有的元素。此外,当被插入的内存空间不够时,需要重新申请一块足够大的内存并进行内存拷贝。值得注意的是,vector每次扩容为原来的两倍,对小对象来说执行效率高,但如果遇到大对象,执行效率就低了。
vector();
vector( size_type num, const TYPE &val );
vector( const vector &from );
vector( input_iterator start, input_iterator end );
无参数 - 构造一个空的vector,
数量(num)和值(val) - 构造一个初始放入num个值为val的元Vector
vector(from) - 构造一个与vector from 相同的vector
迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间 元素的Vector(注:半开区间).
例子
#include<vector>
using namespace std;
void print(vector<int> v)
{
vector<int>::iterator it;
for( it = v.begin(); it != v.end(); it++ )
{
cout << *it << ends;
}
cout << endl;
}
int main()
{
vector<int> v1(5,2);//2 2 2 2 2
vector<int> v2(v1)//2 2 2 2 2
vector<int> v3(v1.begin()+0,v1.begin()+4);// 2 2 2 2
print(v1);
print(v2);
print(v3);
return 0;
}
void assign( input_iterator start, input_iterator end );
void assign( size_type num, const TYPE &val );
assign() 函数要么将区间[start, end)的元素赋到当前vector,或者赋num个值为val的元素到vector中.这个函数将会清除掉为vector赋值以前的内容.
v1.assign(10,1);//10个1
print(v1);
at
at() 函数 返回当前Vector指定位置loc的元素的引用. at() 函数 比 [] 运算符更加安全, 因为它不会让你去访问到Vector内越界的元素. 例如, 考虑下面的代码:
for( int i = 0; i < 11; i++ ) {
cout << "Element " << i << " is " << v1.at(i) << endl;
}
充分保证不会越界了
back back() 函数返回当前vector最末一个元素的引用
v1.back()//返回 2
begin begin()函数返回一个指向当前vector起始元素的迭代器.例如,下面这段使用了一个迭代器来显示出vector中的所有元素:
vector<int> v1( 5, 789 );
vector<int>::iterator it;
for( it = v1.begin(); it != v1.end(); it++ )
cout << *it << endl;
clear clear()函数删除当前vector中的所有元素.
v1.clear();//v1中一个元素度没有了
empty 如果当前vector没有容纳任何元素,则empty()函数返回true,否则返回false.
end end() 函数返回一个指向当前vector末尾元素的下一位置的迭代器.注意,如果你要访问末尾元素,需要先将此迭代器自减1.
erase
iterator erase( iterator loc );
iterator erase( iterator start, iterator end );
erase函数要么删作指定位置loc的元素,要么删除区间[start, end)的所有元素.返回值是指向删除的最后一个元素的下一位置的迭代器
front front()函数返回当前vector起始元素的引用
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 );
在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器, 在指定位置loc前插入num个值为val的元素 在指定位置loc前插入区间[start, end)的所有元素 .
vector<char> alphaVector;
for( int i=0; i < 10; i++ )
alphaVector.push_back( i + 65 );
//插入四个C到vector中
vector<char>::iterator theIterator = alphaVector.begin();
alphaVector.insert( theIterator, 4, 'C' );
//显示vector的内容
for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++ )
cout << *theIterator;
这段代码将显示:
CCCCABCDEFGHIJ
pop_back ` pop_back()函数删除当前vector最末的一个元素
push_back push_back()添加值为val的元素到当前vector末尾
swap swap()函数交换当前vector与vector from的元素
size size() 函数返回当前vector所容纳元素的数目
resize resize() 函数改变当前vector的大小为size,且对新创建的元素赋值val
v1.resize(7,1);//2 2 2 2 2 1 1