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