C++11 序列for循環(huán)語(yǔ)句

本文根據(jù)眾多互聯(lián)網(wǎng)博客內(nèi)容整理后形成,引用內(nèi)容的版權(quán)歸原始作者所有,僅限于學(xué)習(xí)研究使用,不得用于任何商業(yè)用途。

C++11中引入了序列for循環(huán)以實(shí)現(xiàn)區(qū)間遍歷的簡(jiǎn)化。這里所謂的區(qū)間可以是任一種能用迭代器遍歷的區(qū)間,例如STL中由begin()和end()定義的序列。所有的標(biāo)準(zhǔn)容器,例如std::string、 初始化列表、數(shù)組,甚至是istream,只要定義了begin()和end()就行。

這里是一個(gè)序列for循環(huán)語(yǔ)句的例子:

void f(const vector& v)
{
    for (auto x : v) cout << x << ‘n’;
    for (auto& x : v) ++x;    // 使用引用,方便我們修改容器中的數(shù)據(jù)
}

可以這樣理解這里的序列for循環(huán)語(yǔ)句,“對(duì)于v中的所有數(shù)據(jù)元素x”,循環(huán)由v.begin()開(kāi)始,循環(huán)到v.end()結(jié)束。又如:

for (const auto x : { 1,2,3,5,8,13,21,34 }) 
   cout << x << ‘n’;

begin()函數(shù)(包括end()函數(shù))可以是成員函數(shù)通過(guò)x.begin()方式調(diào)用,或者是獨(dú)立函數(shù)通過(guò)begin(x)方式調(diào)用。

參考資料

【C++11 FAQ】序列for循環(huán)語(yǔ)句

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容