• 关于c++primer的一个代码错误


    近期看c++primer第四版的标准容器vector。讲到对vector容器的插入删除元素会使得end()的迭代器失效的问题,所以不建议程序猿对end()的存储。

    vector<int> vec;
    vector<int>::iterator first=vec.begin();
    while(first!=vec.end())
    {
         first=vec.insert(first,12);
         first++;
    }
    上面的这段代码来自c++primer书中,可是假设我们去执行这种程序是不能结束的。会无限循环;

    这时我们假设细致的阅读上面的这段代码的话会发现这段代码的确是无限循环的。由于insert函数返回的新插入元素的迭代器,这种话是永远不可能等于end()的。

    改动方法:

    将first++改为first+=2;
    这样再执行这种程序就能够执行了。




  • 相关阅读:
    LeetCode#22 Generate Parentheses
    重传
    数学问题——gcdgcl
    数学问题——十进制转N进制
    数据模型
    IEEE
    格与代数系统
    数据字典
    贪心算法
    群论
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5206067.html
Copyright © 2020-2023  润新知