for遍歷 一:常規方式 1.遍曆數組 int arr[10] = {1,2,3,4,5,6,7,8,9,10}; for(int i = 0;i<10;i++) { cout<<arr[i]; } 3.遍歷容器類(迭代器) vector<int> s = {0,1,2,3,4,5,6,7,8,9} ...
for遍歷
一:常規方式
1.遍曆數組
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for(int i = 0;i<10;i++)
{
cout<<arr[i];
}
3.遍歷容器類(迭代器)
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
利用*iter去訪問iter所指向的元素
二:利用C++11新特性
1.只查看值(auto n : arr)
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)
vector<int> s = {0,1,2,3,4,5,6,7,8,9};
for(auto &n :s)//將auto n修改為auto &n
{
cout<<++n;//可以對元素進行修改
}
案例:
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.不要在迴圈內部去修改容器,會導致程式崩潰
vector<int> s = {0,1,2,3,4,5,6,7,8,9};
for(auto n : s)
{
cout<<n;
s.push_back(1);
}
在迴圈內修改函數,導致迭代器失效,程式報錯,報錯如下