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用同样参数分割过的序列,返回的参数是第二个序列的开始迭代器,没搞明白想实现的是什么功能!

    第三章:我有话说

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

  • 相关阅读:
    box-shadow使用指南
    chrome的input默认样式黄色背景以及选中加粗的边框处理
    Spring AOP执行方法
    Spring JDBC主从数据库访问配置
    JS 命名冲突
    Data truncation: Truncated incorrect DOUBLE value 解决方案
    MySQL DATE_ADD() 函数
    Codeforces Round #340 (Div. 2)
    2020牛客寒假算法基础集训营3
    Codeforces Round #377 (Div. 2)
  • 原文地址:https://www.cnblogs.com/learn-my-life/p/3761733.html
Copyright © 2011-2022 走看看