• 20180517 迭代器


    下列代码的输出为:
    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
     
     
  • 相关阅读:
    Java基础--阻塞队列ArrayBlockingQueue
    Java基础--反射Reflection
    Java基础--对象克隆
    Java基础--HashCode
    Java基础--序列化Serializable
    OpenCV 绘制图像直方图
    PHP isset, array_key_exists配合使用, 并解决效率问题
    安装XDEBUG步骤及问题
    设计模式例子
    适配器模式例子
  • 原文地址:https://www.cnblogs.com/kxzh/p/9106342.html
Copyright © 2020-2023  润新知