c11中提供一種新的for循環
for(auto item : collection){
statement;
}
該語句等價于:
for(auto index = collection.begin();index != collection.end();index++){
item = *index;
statement;
}
如果collection沒有begin或者end成員函數,則等價于:
for(auto index = begin(collection); index != end(collection); index++){
item = *index;
statement;
}
對于std::initializer_list<>,該loop也适用,因為其有begin()以及end()成員。
即:
for(auto item : {,,,}){
std::cout<<item<<std::endl;
}
另外,對于傳統的c風格數組,該for loop 同樣适用:
int array[] = {,,,,};
int sum = ;
for(int item : array){
sum += item;
}
最後,溫馨提示:注意隐式轉換問題(explicit)。