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)。