我剛剛寫了一個小小的C++程序,目的是爲了理解向量如何處理內存以及運行時發生了什麼。C++向量內存分配和運行時?
有我的代碼:
#include <iostream>
#include <cstdio>
#include <ctime>
#include <vector>
int main(){
clock_t start, end;
int x;
std::vector<int> a(5, 100);
start = clock();
for(int i = 0 ; i <= 900000000 ; i++){
x = a[0];
x = a[1];
x = a[2];
x = a[3];
x = a[4];
}
end = clock();
clock_t duration = end - start;
double durationPerSec = duration/(double)CLOCKS_PER_SEC;
std::cout << "Run-time : " << durationPerSec << std::endl;
return 0;
}
,我得到這樣的輸出:
運行時間:18.7843
當我通過更換矢量編寫相同的代碼動態數組的運行時間更可接受:
運行時間:2.9526
我知道這個代碼是相當愚蠢的,但我不知道爲什麼運行時間如此之長,當我使用的載體?那是因爲我以錯誤的方式使用它,還是因爲有些東西我不明白?
感謝您的回覆。
什麼是你提到這個 「動態數組」? –
您是否正在運行優化版本? – juanchopanza
可能重複的[std :: vector比普通數組慢很多?](http://stackoverflow.com/questions/3664272/stdvector-is-so-much-slower-than-plain-arrays) – delnan