zoukankan      html  css  js  c++  java
  • std::remove_if

    原型:
    #include <algorithm>
    forward_iterator remove_if( forward_iterator start, forward_iterator end, Predicate p );

    函数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<>.

    原文地址:http://huycwork.blog.163.com/blog/static/136751999201052044123998/

  • 相关阅读:
    HTML页引用CSS
    C#反射
    Marshal.SecureStringToBSTR
    SQL语句创建表和数据库
    抽象类和抽象方法
    3 Sum Closest
    Chapter 2: Binary Search & Sorted Array
    Spiral Matrix
    Pascal's Triangle
    Plus One
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/4489807.html
Copyright © 2011-2022 走看看