boost程序库完全开发指南 第5,

  boost程序库完全开发指南 第5,

  C元编程和Boost编程库(C元编程和Boost MPL)-hity CT 1专栏-博客频道-CSDN。网

  C元编程和Boost编程库(C元编程和Boost MPL)中间部分

  分类:

  c

  促进

  发表文章

  2009-05-16 03:03

  406人阅读

  评论(0)

  收集

  Boost报告中的MPL库分析MPL(元编程库)是David Abrahams和Aleksey Gurtovoy为了方便模板元编程而开发的库。2003年被Boost吸收,经过一些实质性的修改,现在已经相当完善了。其最新版本于2004年11月发布。MPL的出现是C模板元编程发展的一个创举。它提供了一个通用的高级编程框架,包括序列、迭代器、算法、元函数等组件。它具有高度的可重用性,不仅提高了模板元编程的效率,也扩大了模板元编程的应用范围。

  (一)MPL的组织结构

  图书馆的组织形式有时甚至比它的功能更重要。MPL的作者明智地借鉴了成功的STL,在MPL中保留了STL的许多概念,并巧妙地封装了函数式编程,让任何熟悉STL的程序员都能轻松理解MPL的用法。和STL一样,MPL有一个完整的概念体系,它的组成部分是经过仔细划分的。组件相对独立,接口通用,所以组件之间的依赖和耦合降到最低。

  STL和MPL的组件概念比较如下:

  STL概念

  MPL对应概念

  容器(集装箱)

  序列(序列)

  算法(算法)

  算法(算法)

  迭代器

  迭代器

  模仿函数(函子)

  元函数类(元函数)

  适配器(转接器)

  有视图、插入迭代器、绑定元函数等同于仿函数适配器。

  分配器

  没有这个概念。

  标准中未定义。

  宏(宏)

  (B) MPL对其他图书馆的依赖

  MPL是一个高级库。它的地位和编译时执行的特殊性决定了它需要一些特殊的辅助设施,并且会依赖于其他库。

  1.boost的预处理器库

  预处理器库是一个基于宏的元编程库[7]。预处理器的作用发生在编译之前,所以比MPL高,能真正实现代码生成。其典型作用是迭代或枚举相似的代码段,以减少容易写错的重复代码段。MPL中的很多码都是近似的,比如在vector的原码中,需要定义n个码。

  矢量{ … }

  其中I从1到n迭代,为了减少重复工作,MPL的源代码大量使用自定义和预处理器库宏来迭代重复或递归的内容。然而,这也使得源代码难以阅读。例如,上面的扩展源代码首先在vector/aux_/numbered.cpp中定义:

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: