模板元编程 Boost::MPL的排序实现
2021-01-23 20:00
127 查看
前言
完成了前面三个模板元编程的排序以后,开始对Boost的MPL库感兴趣了,于是便使用MPL重新实现了一下那三个排序算法,选择排序、快速排序、堆排序。
时间上来说和之前差不多,堆排序花了我大部分的时间。最简单是应该就是选择排序了,只使用了一个类就实现了。
使用感悟
Boost::MPL大大简化了元编程的难度,它实现了大部分的算法,特别是向量(vector)的操作,是模仿std::vector,也有对应的迭代类型。有两种控制结构,判断和循环,其中判断结构和之前的差不多。但是循环结构有很大的不同,其实现的是函数式编程里面常用的折叠(fold)。
函数的调用比较有规律,基本上都是多个输入对应一个输出。使用方法都是
typedef typename boost::mpl::func<argv1, argv2>::type output_type;
所有的结构都有
::type,如果是基本类型,则返回当前值,所以在使用分支结构时可以肆无忌惮的利用惰性加载功能。
实现
相关文章推荐
- 【编程题目】合并两个排序链表(C++实现)
- 并发编程(二):分析Boost对 互斥量和条件变量的封装及实现生产者消费者问题
- 编程之美中烙饼排序的scala实现
- 模板元编程 --- 用 MPL 解决实际问题
- 编程实现单链表的排序
- 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现
- 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现
- 并发编程(二):分析Boost对 互斥量和条件变量的封装及实现生产者消费者问题
- 基于Boost::asio库的网络编程实现基础
- 模板元编程 --- 用 MPL 解决实际问题
- 编程实现选择排序
- 基于Boost::asio库的网络编程实现基础
- java编程排序之内置引用类型的排序规则实现,和自定义规则实现+冒泡排序运用
- C++ boost 组件简介:泛型编程与模板元编程
- 经典编程问题之:选择排序、冒泡排序、汉诺塔游戏,均用js代码实现
- 排序的编程与实现
- 编程产生一个int数组,长度为30,并向其中随机插入1-30,并且不能重复输出数组。实现一个冒泡排序算法对其进行排序,输出排序结果
- 【编程练习】空间复杂度为O(1)的线性排序原理及编程(GNU C实现)
- 有一个班4个学生5门课成绩,要求编程实现把这四个学生的成绩按照第一门课由小到大排序(冒泡法)。
- 给定一个单向链表L(N0,N1,N2,N3……),在不改变node值得情况下,来编程实现对链表重新排列 ,使得排序后的链表为(N0,Nn,n1,Nn-1,n2,Nn-2……)。