本文根據(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)用。
參考資料