vector容器中resize與reserve的區別
阿新 • • 發佈:2019-01-02
Vector中的resize()與reserve()的區別
我用的是VS2013編譯器 首先申明resize()和reserve()這兩個成員函式都是Vector的公有成員函式(public member function) 一、先了解vector容器的基本構成:1.首先明白vector是一種順序容器(申請的內部空間是連續的:類似陣列) 2.它的底層是由類模板實現的 3.vector的基本模板: template<class T> class vector { public: vector() {}; ~vector() {}; ... protected:
}; 4.stl庫中英文版詳解:(如下圖)
二、這兩個成員函式的意義: resize():重新申請並改變當前vector物件的有效空間大小 reserve():重新申請並改變當前vector物件的總空間(_capacity)大小
三、單獨講解resize()和reserve()
1、resize() 該函式的模板: void resize(size_t sz,T c=T()); 1.總的來講:resize()就是重新申請有效空間的大小;
3.第一個引數sz:代表的是當前要申請的有效元素的個數; 4.第二個引數c:代表的是給這sz個有效空間賦一個初始值(預設為T()(T()表示當T為什麼型別時,c就是什麼型別的預設值eg:T為int 則:T()為0,T為char 則:T()為‘\0’)) 5.該函式可以直接由vector的物件呼叫 6.該函式無返回值
vector中resize()應用的舉例:
由上述例子總結: 1.resize()可以改變有效空間的大小; 2.resize()有改變預設值的功能,但該改變的範圍是有限制的 這個範圍是當前設定的sz範圍內
vector中reserve()應用的舉例:
另附:(目的:熟悉一下list 中有那些介面) List(連結串列)(簡講)
list中沒有reserve(),但是有resize();