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