标签:
线性顺序结构,相当于动态数组。
创建后会自动在内存分配一块连续的空间进行存储,大小也可以预先指定(capacity()返回这个大小)。当大小超过预分配的空间时会重新申请一块内存,但是这样的分配很耗时间(所以预先考虑需要的大小能节省时间),重新分配空间时会做如下操作:
最后将原来的空间释放。
所以,如果原来的数据量很大,这样的操作会导致很糟糕的性能。虽然是动态数组,但是预先知道数据的大小才能最好的发挥vector的性能。
特点:
构造函数
vector<int> v1 //一个空的vector
vector<int> v2(5,1)//大小为5值为1的vector
进行赋值或比较
==, !=, <=, >=, <, >
访问某个特定位置 => []
如果两个vector相等:
-则两个vector容量相等
-相同位置的元素相等
比较按照词典规则
assign()对元素赋值
//将[start,end)的元素复制到当前vector
void assign(input_iterator start,input_iterator end);
//赋num个值为value的元素到vector中,会清除掉vector之前的内容
void assign(size_type num, const type &val)
at()返回指定位置元素
//和v[i]差不多,但是比v[i]安全
TYPE at(size_type loc);
back()返回最后一个元素
begin()返回第一个元素的迭代器
clear()清空所有元素
empty()判断是否为空
end()返回最后一个元素的迭代器(指向最后一个元素的下一位置)
erase()删除指定元素
//删除loc处元素
erase(iterator loc);
//删除start和end之间的元素
erase(iterator start,iterator end);
front();返回第一个元素的引用
get_allocator();返回vector的内存分配器
insert()插入元素
//在loc前插入val,返回这个元素的迭代器
insert(iterator loc ,const TYPE &val);
//在loc前插入Num个值为val的元素
insert(iterator loc,size_type num,const TYPE &val);
//在loc前插入[start,end)内所有元素
insert(iterator loc,iterator start,iterator end);
max_size() 返回容纳元素数量上限
pop_back()移除最后一个元素
push_back()在末尾插入元素
rbegin()尾部逆迭代器
rend()头部逆迭代器
reserve()设置最小容纳空间(类似初始化吧。。)
resize()改变大小
size()返回大小
swap()交换vector
标签:
原文地址:http://blog.csdn.net/gr47725812/article/details/51346920