range-based for statement

range-based for statement

for(decl : coll){ // decl:声明 coll:容器
    statement
}

for(int i : {2, 3, 4, 5, 6}){
    cout << i << endl;
}

vector<double> vec;
···
for(auto elem : vec){
    cout << elem << endl;
}

for(auto &elem : vec){
    elem *= 3;
}

编译器如何解释这种行为呢?

//相当于如下表达式
for(auto _pos = coll.begin(), auto _end = coll.end(); _pos != _end; ++_pos){
    decl = *_pos;
    statement
}
原文地址:https://www.cnblogs.com/Codroc/p/13998428.html