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
}
posted @ 2020-11-19 11:50  Codroc  阅读(86)  评论(0编辑  收藏  举报