• 条目九《慎重选择删除元素的方法》


    慎重选择删除元素的方法

    不同容器删除元素的方法是有区别的。

    对于删除容器里的一个元素
    序列容器( string, vector, deque)最高效的方法是erase-remove。

    list最高效的方法是remove。

    关联容器没有remove成员函数,只有erase,直接用erase函数来删除元素。

    若删除容器里符合一个判别式的元素:
    序列容器( string, vector, deque)最高效的方法是erase-remove_if。

    list最高效的方法是remove_if。

    关联容器的简单方法:
    利用remove_copy_if把我们需要的值复制到一个新容器中,然后把原来容器的内容和新容器的内容相互交换。

    高效方法:
    迭代循环遍历容器,对符合要求的元素做删除操作。(需要注意在容器删除时,迭代器会失效,因此,需要在erase时,同时对itr++,就是在删除元素的副作用是让迭代器同时移动到下一个好的迭代器位置)
    ![](file:///storage/emulated/0/Pictures/ddReader/1547204036006.png)

    特别的。如果想对容器删除元素的同时写入日志,那么对于序列容器( string, vector, deque, list)就不能使用erase-removeif,因为这两个函数不能调用写日志操作。

    这时候的做法是:
    自己写个遍历容器删除元素并写日志的函数。
    (需要特别注意的是,对于序列容器,删除迭代器会使迭代器完全失效,包括当前和后面的)
    ![](file:///storage/emulated/0/Pictures/ddReader/1547204402897.png)

  • 相关阅读:
    idea打包jar部署Linux出现乱码
    HTML元素刷新方式
    Linux中Jar启动与停止
    Win10开机自启软件设置
    java后台数据传输到前端少一天,8小时
    mysql字符串提取数组排序
    maven 配置文件
    mac docker安装jupyter notebook镜像
    pycharm使用git
    github使用命令
  • 原文地址:https://www.cnblogs.com/liangjf/p/10256799.html
Copyright © 2020-2023  润新知