• c++ remove_if


    #include <algorithm>

    函数remove_if()移除序列[start, end)中所有应用于谓词p返回true的元素.

    此函数返回一个指向被修剪的序列的最后一个元素迭代器.

    记住, remove_if()并不会实际移除序列[start, end)中的元素; 如果在一个容器上应用remove_if(), 容器的长度并不会改变(remove_if()不可能仅通过迭代器改变容器的属性), 所有的元素都还在容器里面. 实际做法是, remove_if()将所有应该移除的元素都移动到了容器尾部并返回一个分界的迭代器. 移除的所有元素仍然可以通过返回的迭代器访问到. 为了实际移除元素, 你必须对容器自行调用erase()以擦除需要移除的元素. 这也是erase-remove idiom名称的由来:

    container.erase(remove_if(container.begin(), container.end(), pred), container.end());

    remove_if()类似于partition(), 但有两点不同: 1) 它们使用的谓词条件刚好相反. 2) remove_if只强调前面部分(第二部分不再需要了)

    remove_if()以线性时间(linear time)运行.

    remove_if()不能用于关联容器如set<>或map<>.

    以下代码的执行结果如下:

  • 相关阅读:
    Linux基础:Day05
    Linux基础:Day04
    Linux用户和用户组管理
    Linux基础:Day03
    Linux基础:Day02
    Linux基础:Day01
    Shell:Day10
    shell概述和shell脚本执行方式
    fdisk分区
    文件系统常用命令
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/8590221.html
Copyright © 2020-2023  润新知