zoukankan      html  css  js  c++  java
  • 26、STL中迭代器失效的情况有哪些?

    以vector为例:

    插入元素:

    1、尾后插入:size < capacity时,首迭代器不失效尾迭代失效(未重新分配空间),size == capacity时, 所有迭代器均失效(需要重新分配空间)。

    2、中间插入:中间插入:size < capacity时,首迭代器不失效但插入元素之后所有迭代器失效,size == capacity时,所有迭代器均失效。

    删除元素:

    尾后删除:只有尾迭代失效。

    中间删除:删除位置之后所有迭代失效。

    deque 和 vector 的情况类似,而list双向链表每一个节点内存不连续, 删除节点仅当前迭代器失效,erase返回下一个有效迭代器;

    map/set等关联容器底层是红黑树删除节点不会影响其他节点的迭代器, 使用递增方法获取下一个迭代器 mmp.erase(iter++);

    unordered_(hash) 迭代器意义不大, rehash之后, 迭代器应该也是全部失效.

  • 相关阅读:
    ubuntu18.04管理redis
    Mac Vmware虚拟机重启后没有网络
    记Spark写数据到Elasticsearch的报错
    Spark基础和RDD
    PHP日期处理
    集群命令
    hadoop集群时间同步
    HBase读写流程
    Flume简介
    Linux 常用快捷键
  • 原文地址:https://www.cnblogs.com/crbhf/p/15071010.html
Copyright © 2011-2022 走看看