最近在刷leetcode時,發現對一組資料頻繁操作,陣列的效率比 vector快很多,讓習慣用vector的我著實有點懵,於是做了一下實驗首先,我在win10上用vs2015,將陣列和vector分別對陣列進行10萬次操作,結果很明顯。
下面是執行**:
#include
#include
#include
< vector >
#include
< algorithm >
#include
< string >
using
namespace std;
intmain()
dword end_time2 =
gettickcount()
; cout <<
"array run time is "
<<
(end_time2 - start_time2)
<<
"ms."
<< endl;
dword start_time1 =
gettickcount()
; vector<
int>
vect
(10000);
for(
int i =
0; i <
100000
; i++
) dword end_time1 =
gettickcount()
; cout <<
"vector run time is "
<<
(end_time1 - start_time1)
<<
"ms."
<< endl;
system
("pause");
return0;
}
耗時的主要方面是訪問速度,可以把迴圈中的計算改為訪問(注釋有),結果也是差不多。
我們把資料調到100萬,結果是:
調到1000萬:
windows上執行,次數越大,差距越大,可能跟編譯環境和電腦配置有關。下面,我們再linux上進行操作,結果如下:
對陣列和vector分別執行1000萬:
再調到1億次:
可能是雲伺服器,比較強大的原因,差距並不是很明顯.
執行**如下:
#include
#include
//#include< algorithm >
#include
#include
#include
#include
#include
using
namespace std;
intgettime()
intmain()
int end_time2 =
gettime()
; std::cout <<
"array run time is "
<<
(end_time2 - start_time2)
<<
"ms."
<< endl;
vector<
int>
vect
(10000);
int start_time1 =
gettime()
;for
(int i =
0; i <
100000000
; i++
)int end_time1 =
gettime()
; std::cout <<
"vector run time is "
<<
(end_time1 - start_time1)
<<
"ms."
<< endl;
return0;
}
由上可見,在對資料進行頻繁訪問執行操作時,陣列比vector優秀很多。
但是,這不是說陣列一定比vector好,vector擁有很多強大的功能,可以儲存很多種型別,相比之下陣列還是太單一了點,如果只是對一組資料進行簡單的頻繁訪問執行操作,可以c++陣列,否則大多數情況都還是使用c++的vector。
c 中的array陣列和vector陣列
我覺得實驗一下會記得比較牢,話不多直接上 下面是array陣列,感覺用的不多。cpp 風格陣列 array include include include using namespace std intmain for int i 0 i myint.size i size 獲取長度,vector也...
C 陣列定義和訪問
一 陣列定義和初始化 1 一維陣列初始化 2 標準方式一 int value 100 value i 的值不定,沒有初始化3 標準方式二 int value 100 value 0 和value 1 的值分別為1和2,而沒有定義的value i 1 4 則初始化為05 指標方式 int value ...
C 中vector容器與C風格陣列的訪問效率對比
在leetcode演算法題中,我發現了不同型別的vector容器訪問速度有顯著差異,於是進一步想探索vector容器與傳統c風格陣列之間的的訪問速度差異。我編寫了乙個簡單的測試用例,在vs2017環境下測試,如下 include include include using namespace std...