C 中vector容器的記憶體管理

2021-06-19 06:14:55 字數 687 閱讀 4689

vector是類模板,某種程度上可以看做是陣列的公升級版,但建立後仍可以改變大小。甚至《c++ primer(第4版)》中還有這樣子的說法:「從技術上說,在原來為空的vector容器上n次呼叫push_back函式,從而建立擁有n個元素的vector容器,其執行時間永遠不能超過n的常量倍。」

大家也可能都知道,vector會為可能新增的元素預留空間,但是預留空間總會進行麼?今天做了乙個測試,跟大家分享一下結果。

1、初始化時是不會多分分配記憶體的。此時size()恆等於capacity()。原因是也許根本就沒有增加元素的需求,多分配記憶體純粹是浪費。

2、首次呼叫push_back()後,因為沒有多餘的空間存放新增的元素,此時將記憶體加倍。具體來說,若新增之前的size()等於n,則呼叫push_back()後,capacity()變成2n。

3、以後再呼叫push_back(),若空間夠用,則直接新增,當不夠用時,再次加倍空間。

3、呼叫insert()情況類似,但注意確保迭代器有效。

測試**如下:

#include

#include

using namespace std;

using std::vector;

int main()

{ vector ivec;

vector ivec1(3);

cout<<"empty vector"<

c 中的vector容器

在c 中,vector是乙個十分有用的容器,下面對這個容器做一下總結。1 基本操作 1 標頭檔案 include.2 建立vector物件,vectorvec 3 尾部插入數字 vec.push back a 4 使用下標訪問元素,cout 5 使用迭代器訪問元素.vector iterator i...

C 中vector容器的用法

1 標頭檔案 include.2 建立vector物件,vector vec 3 尾部插入數字 vec.push back a 4 使用下標訪問元素,cout vector iterator it for it vec.begin it vec.end it cout it 6 插入元素 vec.i...

C 中 vector(容器)的用法

vector 向量 c 中的一種資料結構,確切的說是乙個類.它相當於乙個動態的陣列,當程式設計師無法知道自己需要的陣列的規模多大時,用其來解決問題可以達到最大節約空間的目的.一.用法 1.檔案包含 首先在程式開頭處加上 include以包含所需要的類檔案vector 還有一定要加上using nam...