第一章:前言

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

第二章:明细

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

第三章:我有话说

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

【STL源码学习】STL算法学习之三的更多相关文章

  1. STL源码剖析:算法

    启 算法,问题之解法也 算法好坏的衡量标准:时间和空间,单位是对数.一次.二次.三次等 算法中处理的数据,输入方式都是左闭又开,类型就迭代器, 如:[first, last) STL中提供了很多算法, ...

  2. STL源码剖析之组件

    本篇文章开始,进行STL源码剖析的一些知识点,后续系列笔记全是参照<STL源码剖析>进行学习记录的 STL在现在的大部分项目中,实用性已经没有Boost库好了,毕竟STL中仅仅提供了一些容 ...

  3. 【STL源码学习】STL算法学习之二

    第一章:前言 学习笔记,记录学习STL算法的一些个人所得,在以后想用的时候可以快速拾起. 第二章:明细 copy 函数原型: template <class InputIterator, cla ...

  4. 《STL源码剖析》学习之traits编程

    侯捷老师在<STL源码剖析>中说到:了解traits编程技术,就像获得“芝麻开门”的口诀一样,从此得以一窥STL源码的奥秘.如此一说,其重要性就不言而喻了.      之前已经介绍过迭代器 ...

  5. stl源码学习(版本2.91)--list

    stl源码学习(版本2.91)--list 一,阅读list()构造函数的收获 1,默认构造函数的作用和被调用的时机 struct no{ no(int i){} //no(){ // std::co ...

  6. c++ stl源码剖析学习笔记(一)uninitialized_copy()函数

    template <class InputIterator, class ForwardIterator>inline ForwardIterator uninitialized_copy ...

  7. 【STL源码学习】std::list类的类型别名分析

    有了点模板元编程的traits基础,看STL源码清晰多了,以前看源码的时候总被各种各样的typedef给折腾得看不下去, 将<list>头文件的类继承结构简化如下 #include < ...

  8. STL源码剖析--迭代器(转)

    一.为什么需要traits编程技术 前面说了很多关于traits的光荣事迹,但是却一直没有介绍traits究竟是个什么东西,究竟是用来干什么的?traits在英文解释中就是特性,下面将会引入trait ...

  9. STL源码--iterator和traits编程技法

    第一部分 iterator学习 STL iterators定义: 提供一种方法,使之能够依序巡访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表达方式. 任何iteartor都应该提供5 ...

  10. STL源码剖析 迭代器(iterator)概念与编程技法(三)

    1 STL迭代器原理 1.1  迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型,STL设计的精髓在于,把容器(Containers)和算法(Algorithms)分开,而迭代器(i ...

随机推荐

  1. DataTable ,XML和JSON相互转化

    网上搜集的,保留下来了,有需要的拿去!private string DataTable2Xml(DataTable dt) { StringBuilder xmlBuilder = new Strin ...

  2. js团购倒计时

    客户端代码可以看: http://www.zhangxinxu.com/wordpress/2010/07/%E5%9B%A2%E8%B4%AD%E7%B1%BB%E7%BD%91%E7%AB%99% ...

  3. mac terminal终端ls命令参数详解

    原文:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ls.1.html -a ...

  4. java 参数传递是引用传递还是值传递?

    JAVA的参数传递倒底是值传递还是引用传递,我觉得两种说法都没错,关键是看怎么理解“引用”和“引用传递”. (一)从编译原理的角度讲,所有那些无法通过形参来修改实参本身的传递机制都是“值传递”,在JA ...

  5. 函数innobase_start_or_create_for_mysql

    buffer pool初始化 /******************************************************************** Starts InnoDB a ...

  6. uva753 A Plug for UNIX

    最大流. 流可以对应一种分配方式. 显然最大流就可以表示最多匹配数 #include<cstdio> #include<algorithm> #include<cstri ...

  7. jquery 分页控件(二)

    上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的,我弄了个简单的asp.net ...

  8. 【转】COCOS2D-X之CCHttpRequest下载图片Demo

    #include "pthread.h" #pragma comment(lib,"libcurl_imp.lib") #pragma comment(lib, ...

  9. WCF 学习总结2 -- 配置WCF

    前面一篇文章<WCF 学习总结1 -- 简单实例>一股脑儿展示了几种WCF部署方式,其中配置文件(App.config/Web.config)都是IDE自动生成,省去了我们不少功夫.现在回 ...

  10. 查看各个release版本 golang的改动

    https://golang.org/doc/go1.1 https://golang.org/doc/go1.2 https://golang.org/doc/go1.3 https://golan ...