std vector與std list的效率比較

2021-08-27 09:23:06 字數 1238 閱讀 3844

一直想知道std中vector和list的效率哪個高些。

於是做了乙個簡單的測試,

對std vector和list的push_back與遍歷操作的效率進行比較。

結果如下:

1. push_back操作:連續push_back操作100000個元素,然後clear()。一直重複10000次。

vector耗時13s, list耗時118s

2. 遍歷操作:採用迭代器對100000個元素的vector和list遍歷,遍歷10000次。

vector耗時20s, list耗時15s

可見,如果是有序的新增元素,vector比list的效率要高將近10倍,而採用迭代器遍歷元素時則效率相差不大。

附**:

#include #include #include #include using namespace std;

class message

;int main()

}time_t end = time(null);

cout << "vector spend time " << end - start << endl;

start = time(null);

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

}end = time(null);

cout << "list spend time " << end - start << endl;

delete msg;

msg = null;

start = time(null);

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

}end = time(null);

cout << "vector spend time " << end - start << endl;

start = time(null);

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

}end = time(null);

cout << "list spend time " << end - start << endl;

return 0;

}

輸出:

vector spend time 13

list spend time 118

vector spend time 20

list spend time 15

std vector與std list的區別

vector std vector是一種順序容器,可以存放任意型別的物件,如int double bool等 它是乙個動態的陣列 即不需要像普通陣列 如int a 10 一樣預先分配元素個數,它可以根據插入的元素的多少來擴充對應的容量,一般是原先的1.5 2倍。實質為,把之前的資料複製到新的陣列中,...

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 傳回最後乙個資料,不檢查這個...