标签:
vector是C++中最基本的顺序容器,可把它看作是一个自动可变长度的数组来使用,使用中,比直接定义数组来使用方便,但运行效率会比数组低一些。
vector的内部实现,还是数组的形式,当新插入数据使得大于容量时,就会进行重新分配空间,并移动数据,vector并不是每次插入新的数据都重新分配空间,并且移动数据,毕竟这样的效率太低了,通常,它是会新开一个大一些的空间,来避免过于频繁的分配空间和移动数据。
vector 当然也是类模板。
template < class T, class Alloc = allocator<T> > class vector; // generic template
需要指明类型。
常用的成员函数:
iterator;//迭代器
const_iterator;//不可变
reverse_iterator;//逆向
const_reverse_iterator;//不可变+逆向
常用的 成员函数:
//1. 迭代器
begin();
end();
rbegin();
rend();
cbegin();//以下C++11新加入
cend();
crbegin();
crend();
//以上都是返回迭代器,其中r开头的表示返回的是逆向的迭代器,c开头的表示返回的是const迭代器。
//2. 容量相关:
size();//返回大小
resize();//
capacity();//分配的空间的大小
empty();//是否为空
shrink_to_fit();//C++11 新加入。请求重新分配空间,使其capacity==size,这个看实现,不一定会操作,只是“请求”
//3. 数据读取
operator[];//
at();
front();
back();
data();//C++11新加入,返回直接的指针
//4. 增删改查
void assign (InputIterator first, InputIterator last);//赋值,更改vector的整个内容。包括capacity。
push_back();//尾部添加数据
pop_back();//删除最后一个位置上的元素
iterator insert (const_iterator position, const value_type& val);//在位置position上添加元素。该方法很低效。
iterator erase (const_iterator position);//删除position位置上的元素。
clear();//清空vector
标签:
原文地址:http://blog.csdn.net/chenriwei2/article/details/46508991