zoukankan      html  css  js  c++  java
  • 【STL源码学习】STL算法学习之三

    第一章:前言

    数量不多,用到的时候会很爽。

    第二章:明细

    STL算法中的又一个分类:分割;将已有元素按照既定规则分割成两部分。 

     is_partitioned

    函数原型:
    template <class InputIterator, class UnaryPredicate>
     bool is_partitioned (InputIterator first, InputIterator last, UnaryPredicate pred);
    函数作用:
    如果序列被分为两部分,前一部分pred都返回true,后一部分pred都返回false,就表示序列已经被分割,返回true,否则返回false。
    函数使用:
    其实就是检测迭代器区间是否分为有序且顺序相反的两部分。
    partition
    函数原型:
    template <class ForwardIterator, class UnaryPredicate>
     ForwardIterator partition (ForwardIterator first, ForwardIterator last, UnaryPredicate pred);
    函数作用:
    联系is_partitioned学习,将序列分割成两部分,第一部分pred都返回true,第二部分pred都返回false,返回值为第二部分第一个迭代器。
    stable_partition
    函数原型:
    template <class BidirectionalIterator, class UnaryPredicate>
     BidirectionalIterator stable_partition (BidirectionalIterator first, BidirectionalIterator last, UnaryPredicate pred);
    函数作用:
    将序列分割成两部分,第一部分pred都返回true;第二部分pred都返回false;同时被排序后的各个元素保持了它们之前的顺序(partition则是随机分布的,仅保证分割成有个序列);返回第二部分第一个迭代器。

    函数使用:

    函数在使用时申请了一块内部存储空间,在多线程编程环境需要谨慎使用,避免内存泄露。 

    partition_copy
    函数原型:
    template <class InputIterator, class OutputIterator1,
             class OutputIterator2, class UnaryPredicate pred>
     pair<OutputIterator1,OutputIterator2>
       partition_copy (InputIterator first, InputIterator last, OutputIterator1 result_true, OutputIterator2 result_false, UnaryPredicate pred);
    函数作用:
    将[first,last)迭代器区间中pred返回true的拷贝给result_true,pred返回false的返回给result_false,函数返回值的pair为<result_true, result_false>两者均为对应迭代器序列的new end。
    partition_point
    函数原型:
    template <class ForwardIterator, class UnaryPredicate>
     ForwardIterator partition_point (ForwardIterator first, ForwardIterator last, UnaryPredicate pred);
    函数作用:
    好奇怪的一个函数呀!
    要求迭代器序列必须是partition用同样参数分割过的序列,返回的参数是第二个序列的开始迭代器,没搞明白想实现的是什么功能!

    第三章:我有话说

    这最后一个函数是干嘛的?明白的提示一下。 

  • 相关阅读:
    委托返回类型的协变性
    委托参数的逆变性
    单例采用双锁定技术
    Jupyter Notebook 工作空间 / 默认路径 的设置方式
    Runaway argument错误 [Overleaf: 在线Latex] [Type 3问题后续]
    [Android ADB] An auto-input method for Android and Windows
    [Latex] 所有字体embedded: Type3 PDF文档处理 / True Type转换为Type 1
    螺旋矩陣 非数组解法
    2014.9.11 Research Meeting Report
    2014.8.23 Research Meeting Report
  • 原文地址:https://www.cnblogs.com/learn-my-life/p/3761733.html
Copyright © 2011-2022 走看看