您的位置:首页 > 其它

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

这最后一个函数是干嘛的?明白的提示一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: