美文网首页
STL迭代器失效

STL迭代器失效

作者: 钟离惜 | 来源:发表于2020-08-31 22:44 被阅读0次

迭代器在移除元素时迭代器可能失效。
vector如果开辟新的内存时迭代器可能失效。
新增元素时尾迭代器可能失效。
......

#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <map>
#include <set>
using namespace std;

int main()
{
    {
        vector<int> vec;
        vec.push_back(1);
        vec.push_back(2);
        vector<int>::iterator ite = vec.begin();
        cout << "vec:" << *ite << endl;
        ite = vec.erase(ite);
        //vec.erase(ite);
        cout << "vec:" << *ite << endl;
    }
    cout << endl;
    {
        list<int> List;
        List.push_back(1);
        List.push_back(2);
        list<int>::iterator ite = List.begin();
        cout << "List:" << *ite << endl;
        ite = List.erase(ite);
        //List.erase(ite);
        cout << "List:" << *ite << endl;
    }
    cout << endl;
    {
        deque<int> Deque;
        Deque.push_back(1);
        Deque.push_back(2);
        deque<int>::iterator ite = Deque.begin();
        cout << "Deque:" << *ite << endl;
        ite = Deque.erase(ite);
        //Deque.erase(ite);
        cout << "Deque:" << *ite << endl;
    }
    cout << endl;
    {
        map<int, int> nnmap;
        nnmap.insert(map<int, int>::value_type(1, 1));
        nnmap.insert(map<int, int>::value_type(2, 2));
        map<int, int>::iterator ite = nnmap.begin();
        cout << "nnmap:" << ite->first << endl;
        ite = nnmap.erase(ite);
        //nnmap.erase(ite);
        cout << "nnmap:" << ite->first << endl;
    }
    cout << endl;
    {
        set<int> Set;
        Set.insert(1);
        Set.insert(2);
        set<int>::iterator ite = Set.begin();
        cout << "Set:" << *ite << endl;
        ite = Set.erase(ite);
        //Set.erase(ite);
        cout << "Set:" << *ite << endl;
    }
    return 0;
}

相关文章

  • STL容器

    STL容器迭代器 STL容器迭代器失效情况分析、总结[https://ivanzz1001.github.io/r...

  • 2020-02-12 容器和算法

    1:STL迭代器删除失效问题: 对于序列容器来说,使用erase(iterator) 后面每个元素的迭代器都会实效,

  • STL 迭代器失效

    deque及迭代器失效问题 - CSDN博客

  • STL迭代器失效

    迭代器在移除元素时迭代器可能失效。vector如果开辟新的内存时迭代器可能失效。新增元素时尾迭代器可能失效。......

  • C++ STL是什么

    STL 组件主要包括容器,迭代器、算法和仿函数。STL 基本结构和 STL 组件对应。 STL 主要由迭代器、算法...

  • STL源码解析(3)-traits特性

    STL源码解析(3)-traits特性 算法和迭代器 在STL中绝大多数容器均提供了迭代器, 迭代器提供了访问/遍...

  • C++:迭代器的设计与实现

    迭代器:类似指针的对象,可以解引用、自增、比较(!=)等操作。 STL中,迭代器用来STL Algorithm与C...

  • (Boolan) STL与泛型编程第四周笔记(上)

    1 STL组建(STL Components) 关键组建:容器,迭代器,算法 STL的基本观念就是将数据和操作分离...

  • (Boolan) STL与泛型编程第四周笔记(上)

    1 STL组建(STL Components)关键组建:容器,迭代器,算法STL的基本观念就是将数据和操作分离,数...

  • STL学习笔记之算法

    迭代器 标准STL容器提供了四种不同的迭代器:iterator、const_iterator、reverse_it...

网友评论

      本文标题:STL迭代器失效

      本文链接:https://www.haomeiwen.com/subject/swadjktx.html