在標准C++中,並沒有foreach關鍵字。
但是在QT中,可以使用這一個關鍵字,其主要原因是QT自己增加了這一個關鍵字,就像slots和signals、emit等一樣。增加的foreach關鍵字在編譯時會進行預處理。
其用法為:
foreach (varItem , Items) // foreach(variable ,container)
其中,varItem(variable)是容器Items(container)中的一個項,相當於:variable=container.item 。遍歷會從頭遍歷到尾。
如以下代碼:
QStringList slt = {"abc", "qwe", "upo"}; foreach(QString s , slt ) { cout<<s<<endl; } // 輸出結果為: abc qwe upo
在C#、Java等語言中,可以直接使用foreach,為語言自帶關鍵字,用法相似。
其中,在C++11標准中,提供了一種新的語句:范圍for (range for) 語句。和這里的foreach用法類似。只是這里使用的是 “:” 而不是 “,” 。
其語法形式為:
for (declaration : expression)
使用時代碼如下:(參照foreach代碼)
QStringList slt = {"abc", "qwe", "upo"}; for(QString s : slt ) { cout<<s<<endl; } // 輸出結果為: abc qwe upo