for遍历
一:常规方式
1.遍历数组
C++
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for(int i = 0;i<10;i++)
{
cout<<arr[i];
}
3.遍历容器类(迭代器)
C++
vector<int> s = {0,1,2,3,4,5,6,7,8,9};
for(vector<int>::iterator iter = s.begin();iter!=s.end();iter++)|
{
cout<<*iter;C
}
用vector ::iterator iter建立一个指向第一个元素的迭代器,当迭代器没有指向最后一个元素时,就++
利用*iter去访问iter所指向的元素
二:利用C++11新特性
1.只查看值(auto n : arr)
C++
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for(auto n : arr)//自动获取元素的类型,当元素为空时,就结束循环
{
cout<<n;
}
vector<int> vec = {1,2,3,4,5,6,7,8,9,10};
for(auto n : vec)
{
cout<<n;
}
2.需要改变值(auto &n : arr)
C++
vector<int> s = {0,1,2,3,4,5,6,7,8,9};
for(auto &n :s)//将auto n修改为auto &n
{
cout<<++n;//可以对元素进行修改
}
案例:
C++
vector<int> s = {0,1,2,3,4,5,6,7,8,9};
cout<<"修改前";
for(auto &n : s)//利用&n
{
cout<<n++;//修改n
}
cout<<endl;
cout<<"修改后";
for(auto n : s)
{
cout<<n;
}
cout<<endl;
以上的代码输出为
注意事项:
1.不要在循环内部去修改容器,会导致程序崩溃
C++
vector<int> s = {0,1,2,3,4,5,6,7,8,9};
for(auto n : s)
{
cout<<n;
s.push_back(1);
}
在循环内修改函数,导致迭代器失效,程序报错,报错如下