今天在做題的時候碰到一個很納悶的題,就是在遍歷vector<pair<int,int> >的時候用迭代器標准定義迭代器遍歷和auto直接定義迭代器
二者形式不同,並且調用first和second元素的形式也不同!!!
一、正確使用迭代器標准定義形式代碼如下:
for(vector<pair<int,int> >::iterator it = add.begin() ; it != add.end() ; it ++){
int x = find(it->first);
a[x] += it->second;
}
錯誤使用迭代器標准定義形式代碼如下:
1.
for(vector<pair<int,int> >::iterator it **:** add){
int x = find(it->first);
a[x] += it->second;
}
2.
for(vector<pair<int,int> >::iterator it = add.begin() ; it != add.end() ; it ++){
int x = find(it**.**first);
a[x] += it**.**second;
}
二、正確使用auto定義迭代器
for(auto it **:** add){
int x = find(it**.**first);
a[x] += it**.**second;
}
真的是匪夷所思,樓主先把問題扔這,接着查資料去了!!!