首页 > 其他 > 详细

关于vector迭代器定义和auto直接定义

时间:2020-10-02 23:01:48      阅读:96      评论:0      收藏:0      [点我收藏+]

今天在做题的时候碰到一个很纳闷的题,就是在遍历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;
    }

真的是匪夷所思,楼主先把问题扔这,接着查资料去了!!!

关于vector迭代器定义和auto直接定义

原文:https://www.cnblogs.com/ZhaoHaoFei/p/13762193.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!