【STL源码剖析读书笔记】【第6章】算法之partition算法
1、partition将区间[first, last)中的元素重新排列。所有被一元条件运算pred判定为true的元素,放在区间的前段,判定为false的元素,放在区间的后段。该算法并不保证元素的原始相对位置。
2、partition源代码
template <class BidirectionalIterator, class Predicate>
BidirectionalIterator partition(BidirectionalIterator first,BidirectionalIterator last, Predicate pred) {while (true) {while (true)if (first == last)//头指针等于尾指针,所有操作结束return first;else if (pred(*first))//头指针所指元素不符合移动条件++first;else//头指针所指元素符合移动条件,跳出内循环break;--last;//尾指针减1while (true)if (first == last)//头指针等于尾指针,所有操作结束return first;else if (!pred(*last))//尾指针所指元素不符合移动条件--last;else//尾指针所指元素符合移动条件,跳出内循环break;iter_swap(first, last);//头尾指针所指元素彼此交换++first;//头指针前进1,准备下一个外循环迭代}
}
3、具体例子
#include<iostream>
#include<algorithm>
using namespace std;template<typename T>
struct isEven:public unary_function<T,bool>{bool operator()(const T& x) const{return x % 2 ? false : true;}
};
int main(){int ia[] = { 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 7, 8 };partition(begin(ia), end(ia), isEven<int>());for (int* it = begin(ia); it != end(ia); ++it)cout << *it << " ";cout << endl;system("pause");return 0;
}
4、上述例子中partition工作过程
转载于:https://www.cnblogs.com/ruan875417/p/4558303.html
【STL源码剖析读书笔记】【第6章】算法之partition算法相关推荐
- STL源码剖析读书笔记--第6章第7章--算法与仿函数
老实说,这两章内容还蛮多的,但是其实在应用中一点点了解比较好.所以我决定这两张在以后使用过程中零零散散地总结,这个时候就说些基本概念好了.实际上,这两个STL组件都及其重要,我不详述一方面是自己偷懒, ...
- 【STL源码剖析读书笔记】自己实现stack之MyStack(底层用MyList)
MyList.h #ifndef MY_LIST_H #define MY_LIST_H#include<memory> //list的node结构 template<typenam ...
- 【STL源码剖析读书笔记】【第5章】关联式容器之hashtable
1.hashtable在插入.删除.搜寻操作上具有"常数平均时间"的表现,不依赖输入元素的随机性. 2.hashtable通过hashfunction将元素映射到不同的位置,但当不 ...
- 【STL源码剖析读书笔记】【第5章】关联式容器之set、map、multiset和multimap
一.set 1. set的特性是所有元素都会根据元素的键值自动排序,set元素的键值就是实值,实值就是键值. 2. 不能通过set的迭代器改变set的元素,setiterators是一种const ...
- STL源码剖析 读书笔记一 2013-5-4
SGI STL 是声名最盛的一个STL版本,该版本被纳为GNU C++标准程序库. STL六大组件的交互关系:container通过allocator取得数据存储空间,algorithm通过iter ...
- 《STL源码剖析》笔记——allocator
六大组件间关系 部分STL文件包含关系 allocator包含于中: 实际实现于三个文件 : 1.stl_construct.h :对象的构造和析构 2.stl_alloc.h空间配置和释放 3.st ...
- python源码剖析读书笔记总结_《Python源码剖析》读书笔记:内存垃圾回收
Python内存回收的基石是引用计数,"当一个对象的引用被创建或复制时,对象的引用技术加1:当一个对象的引用被销毁时,对象的引用技术减1",如果对象的引用计数减少为0,将对象的所占 ...
- 【STL源码剖析】迭代器
[STL源码剖析]迭代器 第3章 迭代器(iterators)与traits编程技法(<STL源码剖析> ) 3.1 迭代器设计思维--STL关键所在 3.2 迭代器(iterator)是 ...
- C++ STL源码剖析 笔记
写在前面 记录一下<C++ STL源码剖析>中的要点. 一.STL六大组件 容器(container): 各种数据结构,用于存放数据: class template 类泛型: 如vecto ...
最新文章
- 学术前沿 | 图像质量量化评估标准综述
- Mysql练习题14-至少有5名直接下属的经理
- Asp.net Mvc Enum 扩展
- jquery 操作字符串、数组、对象常用方法
- 通向架构师的道路(第四天)之Tomcat性能调优-让小猫飞奔
- SpringMVC的请求-获得请求参数-请求参数类型
- linux 系统安装mongodb数据库---方法1
- ZOJ 2760 How Many Shortest Path 最大流+floyd求最短路
- jdbc连接oracle mysql_JDBC连接MySQL、Oracle和SQL server的配置
- Oracle内存结构详解(四)--Oracle SGA其他组成部分
- 高速PCB电路板的信号完整性设计
- 如何设置内网端口映射外网
- excel打开很慢_从海量Excel文件中快速高效地提取数据
- 手写Spring-第十六章-旋转吧雪月花!用三级缓存解决循环依赖
- 关于@hide的理解
- html 串行通信接口,一种串行通信接口的级联方法与流程
- 【@NotNull和@NotBlank的区别】
- AD16原理图导出PCB报错Footprint not found
- 确认过眼神,你是我要找的人!面试通关技巧,礼仪hin重要!
- 基于SpringBoot的实习管理系统
热门文章
- 免费硬件、万元奖池、百度内推,AI达人创造营邀你出战!
- “遇事不决,量子力学”?微软亚研院开源时空预测开源工具:FOST,应对各行业共性预测需求!...
- 【Attention九层塔】注意力机制的九重理解
- CV Papers|计算机视觉论文推荐周报20200501期
- Keras与PyTorch全方位比较 哪一个深度学习框架更适合初学者?
- Fastformer:史上最强最快Transformer!清华、MSRA出品!
- 超强领先!Transformer图像复原效果显著!
- C++ Primer 第五版 第7章类 7.1——类讲解(成员函数、非成员函数、构造函数)习题答案
- HALCON学习之旅(四)
- html与markdown互相转换