STL 學習之vector測試

2021-09-02 11:18:07 字數 850 閱讀 1365

vector 是向量陣列,一端開口的陣列,其記憶體結構圖如下所示

可見其在尾部插入資料速度很快,而在其他地方插入資料將會很慢

void testvector()

;
vectortest_vec;
clock_t timestart = clock();
for(long i = 0; i < ran_max;i++)
catch(exception& p)
}
cout << "milli-seconds : " << (clock() - timestart)輸出結果如下

milli-seconds : 3522       //迴圈遍歷1000000次消耗時間

vector.size() = 1000000 //當前vector資料大小

vector.front()  = 41    //第乙個元素值

vector.back() = 12679 //最後乙個元素值

vector.data() = 0x4b5f020 //vector首位址

vector.capactity() = 1048576 //當前vector的容量

insert time = 18   //在第乙個元素插入數值耗時

insert string = test

由於vector的增長方式是2倍增長,所以vector.capactity()有的時候會比vector.size() 大很多,而在頭部插入資料後由於所有資料都要往後移,並且呼叫string的析構與建構函式,所以耗時比較長

STL之vector學習筆記

參考sgi stl 及 侯捷 stl原始碼剖析 概述 vector是動態空間,隨著元素的加入,它的內部機制會自行擴充空間以容納新元素。但是它不是單純地 配置新空間 資料移動 釋放舊空間,它實際配置的大小會比客戶需求要大一點定義 sgi stl的vector實現於stl vector.h中,而不是ve...

C 學習之STL(一)vector

c primer plus讀書筆記 三 復合型別 中已經簡單介紹過vector是什麼,這個系列主要是介紹stl特性。vectorc 建立乙個空的vector vectorc1 c2 建立乙個vector c1,並用c2去初始化c1 vectorc n 建立乙個含有n個elemtype型別資料的vec...

STL 之vector向量容器

vector向量容器 作為陣列的乙個泛化推廣的vector容器,不僅可以陣列一樣的元素隨機訪問,還可以在容器的尾端插入新元素 vector是乙個簡單,高效的容器,在尾端插入和刪除元素,演算法時間複雜度為o 1 常數階,其他元素的插入和刪除為o n 的線性階,其中n為容器的元素個數,vector具有自...