關於vector迭代器定義和auto直接定義


今天在做題的時候碰到一個很納悶的題,就是在遍歷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;
    }

真的是匪夷所思,樓主先把問題扔這,接着查資料去了!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM