range-for
for
循环中轻松地遍历容器(vector
、set
、list
等):
vector<int>v={5,1,3,4,2};
for(int x : v)cout<<x<<' ';
//output:5 1 3 4 2
//按顺序遍历 v 中的每一个元素,并赋值给 x。
也可以将 xx 声明为引用:
vector<int>v(n);
for(int &x : v )cin>>x;
//读入一个长度为 n 的序列
注意,xx 的类型必须与 vv 中元素的类型保持一致,否则会 CE。
也可以使用 auto
进行声明。
vector<int>v={5,1,3,4,2};
for(auto &x : v)cout<<x<<' ';
//output:5 1 3 4 2
//按顺序遍历 v 中的每一个元素,并赋值给 x。
注意,若遍历数组,那将从头到尾遍历一遍,不推荐。
用处极为广泛,常用于对于 vector
存图的遍历等。
超前用法:
在for-each前可以添加一个表达式,如初始化,输出内等等,有很多开发空间
vector<int>vec={5,1,3,4,2};
for (constexpr int g = 7; const auto &i: vec)
{
cout << i << g;
}
//output:17 27 37 47 57 57 67 27
//初始化一个int类型g,并不断遍历vec中的元素以输出