std vector與std list的區別

2021-09-13 11:05:00 字數 773 閱讀 6398

vector

std::vector是一種順序容器,可以存放任意型別的物件,如int、double、bool等

它是乙個動態的陣列:即不需要像普通陣列(如int a[10])一樣預先分配元素個數,它可以根據插入的元素的多少來擴充對應的容量,一般是原先的1.5-2倍。

實質為,把之前的資料複製到新的陣列中,再把先前的記憶體釋放,這種方式可以很大的減少對記憶體的消耗。

因為陣列是一組位址連續的儲存空間,所以vector可以快速訪問任意元素,支援下標訪問元素。

但是插入或者刪除元素的話,會造成陣列記憶體的拷貝,從而影響到效率。

vector下標訪問:

#include #include using namespace std;

int main()

// 訪問vector中的 5 個值

for (int i = 0; i < 5; i++)

}

list

std::list的實質是雙向鍊錶,而鍊錶在任意位置插入或者刪除某個元素,只需對其前面和後面的元素進行接鏈和斷鏈即可,

不需要移動其他的鍊錶元素,對於刪除和插入的效率比較高。

但是卻不適合隨機訪問各個元素,因此不支援下標法訪問元素。

結論:

vector強調的是通過隨機訪問的效率。

list強調的是插入和刪除元素的效率。

std vector與std list的效率比較

一直想知道std中vector和list的效率哪個高些。於是做了乙個簡單的測試,對std vector和list的push back與遍歷操作的效率進行比較。結果如下 1.push back操作 連續push back操作100000個元素,然後clear 一直重複10000次。vector耗時13...

std vector物件操作

c primer4 exercise 3.13 讀一組整數到 vector 物件 1 計算並輸出每對相鄰元素的和。如果讀入元素個數為奇數,則提示使用者最後乙個元素沒有求和,並輸出其值。2 頭尾元素兩兩配對 第乙個和最後乙個,第二個和倒數第二個,以此類推 計算每對元素的和,並輸出。implement ...

轉 std vector成員函式

vector成員函式 函式表述c.assign beg,end c.assign n,elem 將 beg end 區間中的資料賦值給c。將n個elem的拷貝賦值給c。c.at idx 傳回索引idx所指的資料,如果idx越界,丟擲out of range。c.back 傳回最後乙個資料,不檢查這個...