1. 程式人生 > >C++ Vector遍歷的幾種方式及效能對比

C++ Vector遍歷的幾種方式及效能對比

幾種容器遍歷方法

1.迭代器

for (std::vector<int>::iterator it = vecTest.begin(); it != vecTest.end(); ++it)
{
	tempNum = *it;
}

2.C++11 新增關鍵字auto

for (auto it : vecTest)
{
	tempNum = it;
}

3.對C念念不捨的童鞋們習慣的陣列寫法

for (size_t i = 0; i < maxCount; i++)
{
	tempNum = vecTest[i];
}

debug模式下執行三次,結果如下:

可以看到方式三的效能遠勝於前兩種,三和一差了十幾倍,這個差別有點大了,不過別急我們再看看release模式下執行狀況,如圖:

剛開始看到這結果時我是這樣的。怎麼會是0,怎麼可以是0,難道我的程式碼有bug!

然後我想這應該是被編譯器優化了,那三段程式碼根本沒執行,於是我在後面加了一句cout << tempNum << endl;

再試一試,看圖:

哦耶,有結果了,可以看到三種方式差別很小,寫程式碼時可以不用糾結用什麼比較高效。