【STL源码学习】STL算法学习之三
2014-05-30 20:41
148 查看
第一章:前言
数量不多,用到的时候会很爽。
第二章:明细
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算法中的又一个分类:分割;将已有元素按照既定规则分割成两部分。
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源码剖析学习二:空间配置器(allocator)
- C++ Standard Stl -- SGI STL源码学习笔记(06) stl_vector 与 一些问题的细化 2 push_back函数剖析
- STL源码学习----内存管理
- STL源码剖析学习之increment、decrement、dereference实现源码
- stl-stable_sort源码学习笔记
- STL源码学习之空间配置器allocator【2013.11.15】
- C++ Standard Stl -- SGI STL源码学习笔记(04) stl_deque && 初涉STL内存管理
- C++ Standard Stl -- SGI STL源码学习笔记(03) STL中的模板编译期检查与偏特化编译期检查
- stl源码学习之内存配置器
- STL源码学习----迭代器及其适配器
- STL源码学习——Lists(链表)
- STL源码剖析学习十七:算法之其他算法
- C++ Standard Stl -- SGI STL源码学习笔记(05) stl_vector 与 一些问题的细化 1
- C++ Standard Stl -- SGI STL源码学习笔记(01) auto_ptr
- STL源码剖析学习五:list
- STL源码剖析学习四:vector
- STL源码学习----内存管理
- STL源码学习之空间配置
- SGI STL源码学习