码迷,mamicode.com
首页 > 其他好文 > 详细

20180517 迭代器

时间:2018-05-29 18:59:32      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:lsp   void   std   return   指针   ack   tab   通过   item   

下列代码的输出为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream>
#include<vector>
using namespace std;
 
int main(void)
{
    vector<int>array;
    array.push_back(100);
    array.push_back(300);
    array.push_back(300);
    array.push_back(500);
    vector<int>::iterator itor;
    for (itor = array.begin(); itor != array.end(); itor++)
    {
        if (*itor == 300)
        {
            itor = array.erase(itor);
        }
    }
    for (itor = array.begin(); itor != array.end(); itor++)
    {
        cout << *itor << " ";
    }
    return 0;
}
100 300 300 500
100 300 500
100 500
程序错误

答案B 错选C
erase()一次只删除一个元素,返回一个迭代器指针,指向下一个元素。本题中,删除第一个300后,itor指向其后一个300,再通过itor++就指向了500.
vector 的erase函数 删除指定位置的元素时, 返回值是一个迭代器,指向删除元素下一个元素。删除第一个300后,itor指向其后的300,然后执行itor++,指向了500
 
 

20180517 迭代器

标签:lsp   void   std   return   指针   ack   tab   通过   item   

原文地址:https://www.cnblogs.com/kxzh/p/9106342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!