目的
- 不以开头和结尾进行遍历,而是以容器中的元素进行枚举
- 并不能代替传统for循环,二者之间各有优缺点
表示方式
vector<string> text;
for(word:text){
}
细节
- 使用引用避免复制副本造成的低效
- 但引用会造成修改原数据的困扰,可以增加const声明,标记为变量只读
- 细节一:枚举loop方式中,对于关系容器得到的是pair对象;传统方式得到的是迭代器
- 细节二:枚举loop方式中,关系容器的key值和set中的元素都是只读类型的,不能做修改
- 细节三:枚举loop方式中,被枚举的容器范围只会被访问一次,也就是说在遍历过程前就把循环的次数固定了,如果再对容器进行增删元素操作会导致遍历出错
建议
举例
#include <bits/stdc++.h>
using namespace std;
int main(){
vector<int> vec{
1, 2, 3, 4, 5, 6, 7, 8, 9};
cout << "传统loop,迭代器访问:";
for(auto it = vec.begin(); it < vec