我建议你把 c++ primer 5th 向量、容器、迭代器、右值引用、move语义、移动构造、移动赋值 这些章节看看
Reply Like 0 View the author
ritter
deepin
2020-07-30 04:41
#8
for range算是syntactic sugar,其实跟for(auto i = vec.begin(); i != vec.end(); i++)一模一样,汇编代码没有任何区别。在for循环中,vec给你一个迭代器,vec.end()在编译时就已经确定,所以即使你在过程中改变了vector的长度,for循环中并不知道,他还是按照原来的vec.end()进行循环。
下面这段代码会怎么执行?
我的问题是:
C++11中的范围for循环,for(declaration : expression)
expression会被执行几次?只有在第一次进入时执行么?
经过实验发现是的,但是我没有在资料中查到具体描述。