【C++學習】vector

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章