普通指針也是一種迭代器web
int arr[5]={1,2,3,4,5}; int *p=arr; for(int i=0;i<5;i++ { //cout<<arr[i]; cout<<*(p++); vector<int> v; //聲明一個vector的容器,頭文件<vector>
一,添加數據算法
v.push_back(10);
二,容器遍歷
每一個容器都有本身專屬的迭代器
第一種:svg
vector<int>::iterator itbegin=v.begin();//起始迭代器 vector<int>::iterator itend=v.end()//結束迭代器(指向尾地址的下一位) while(itbegin!=itend) {cout<<*(itbegin++)<<endl;}
第二種:函數
for(vector<int>::iterator it=v.begin();it!=v.end();it++) {cout<<*it<<endl;}
第三種:
利用系統提供的算法;for_each.net
void myprint(int val) { cout<<val<<endl; } for_each(v.begin(),v.end(),myprint) //myprint爲一個回調函數(寫一個輸出就夠了) //頭文件<algorithm>
三,理解迭代器指針
class Person { public: string name; int age; }; for(vector<Person>::iterator it=v.begin();it!=end();it++) { //*it---------Person //類比:Person *it; cout<< (*it).name; //Person(*it)不爲指針類型} for(vector<Person*>::iterator it=v.begin();it!=end();it++) { //*it---------Person* //類比:Person **it; cout<< (*it)->name; //Person*(*it)爲指針類型}
四,雙層嵌套code
vector<vector<int>> v; vector<int> v1; vector<int> v2; vector<int> v3; v.push_back(v1); v.push_back(v2); v.push_back(v3); for(vector<vector<int>>::iterator it=v.begin();it!=v.end();it++) { // *t------vector<int> for(vector<int>::iterator vit=(*it).begin();vit!=(*it).end();vit++) { // *vit------int cout<<*vit<<endl; } }
本文分享 CSDN - 希境。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。xml