隨著C++11標准的出現,C++標准添加了許多有用的特性,C++代碼的寫法也有比較多的變化。
vector是經常要使用到的std組件,對於vector的遍歷,本文羅列了若干種寫法。
()
假設有這樣的一個vector:
vector<> valList = { , , , , , , , , , };
需要輸出這個vector中的每個元素,原型如下:
ShowVec( vector<>& main( argc, *<> valList = { , , , , , , , , ,
方法零,對C念念不捨的童鞋們習慣的寫法:
ShowVec( vector<>& count = ( i = ; i < count;i++<< valList[i] <<
方法一,大家喜聞樂見的for循環迭代器輸出:
ShowVec( vector<>& (vector<>::const_iterator iter = valList.cbegin(); iter != valList.cend(); iter++<< (*iter) <<
方法二,與方法一差不多,不過能少打幾個字:
ShowVec( vector<>& (auto iter = valList.cbegin(); iter != valList.cend(); iter++<< (*iter) <<
template<typename T> printer( T&<< val << ShowVec( vector<>&<>
template<typename T> ()( T&<< obj << ShowVec( vector<>&<>
方法五,for_each加Lambda函數:
ShowVec( vector<>& & val)->{cout << val <<
方法六,for區間遍歷:
<< val <<
etc.
最後:
C++11相比C++98/03還是更新了挺多東西的,目前g++最新版已完全支持C++11標准,這意味著開源社區的新的project必然將遷移到最新的C++11標准上,平時參與/閱讀/參考開源代碼的童鞋們需要學習了。
作為C++程序員,我們當然要與時俱進,擁抱C++11!
下面附一個C++11更新列表:
--------------------------------------------------------