《超越C++标准库:Boost库导引》:序
序(Foreword)
C++社区正在发生着一些美妙的事情。尽管C++仍然是世界上使用最广泛的编程语言,它依旧在变得更加强大而且易用。不信么?容我慢慢道来。
当前版本的标准C++是在1998年最终确定下来的,它为传统的过程式编程(procedural programming)以及面向对象和泛型编程(generic programming)提供了强有力的支持。正如老的(1998年以前的)C++单枪匹马地把面向对象引入软件开发者日常工作可及的范围那样,C++98针对泛型编程做了同样的事情。1990年代中期标准模板库(STL)被整合到标准C++代表了一种编程范式(paradigm)的转移,它的意义不亚于Bjarne Stroustrup在1980年代早期把类引入C语言。现在,大多数C++从业人员对于STL的概念已经非常熟悉,是时候再一次提升我们的技术水准了。
如何发挥C++的威力仍然在不断地被发掘。现今的许多C++库(尤其是一些数学计算库)都受益于模板元编程(template metaprogramming)原本所具有的优势,这是一个偶然的并且未被预见到的结果,它得益于C++模板的杰出设计。随着高阶的工具和技术在C++社区不断出现,开发日益复杂的应用程序正在变得更加直接了当和令人愉悦。
如何强调Boost库对于C++世界的重要性都不为过。从C++98的标准通过以来,除了ISO的标准C++委员会(叫做WG21),没有其他的组织像Boost这样对C++的发展方向产生了如此巨大的影响,Boost的许多出资者都是WG21的著名成员,包括它的创建者,我的朋友Beman Dawes。成千上万经验丰富的Boost志愿者以没有任何私心的、专家评审(peer-reviewed)的方式,开发了许多有用的库,这些库提供了C++98所未能提供的解决方案。其中的10个库已经被认可并打算集成到就要到来的C++0x库,而且还有更多的库处于考虑之中。当确实欠缺某个被提议的库的时候,Boost和WG21之间的相互交流和影响(cross-pollination)所迸发出来的智慧暗示了需要一些谨慎的语言上的改进,这些东西正在考虑之中。
退一万步说,假设你从没听说过Boost,那我问问你。。。。。。你需要在文本和数字之间做转换么?或者(好一点的情况)在以流的方式进行输入输出的(streamable)类型之间进行转换。没问题,使用Boost.lexical_cast就好了。哦,你需要进行更复杂的文本处理?或许可以试试Boost.Tokenizer或者Boost.Regex,如果你需要做更加全面的解析,可以试试Boost.Spirit。Boost.Bind对于函数进行投影和组合的能力可能会让你瞠目结舌。对于函数式编程(functional programming)可以使用Boost.Lambda。静态断言(Static assertions)?当然没问题。如果你对数学有偏好,扔掉铅笔吧,你可以使用Boost.Math, Graph, Quaternion, Octonion, MultiArray, Random, 以及Rational。如果你有幸体会到了使用Python的乐趣,你可以在Boost.Python的帮助下把它和C++一起使用。对于上面提到的这些库,你可以根据实际需要选择开发平台。
Björn Karlsson是一个狂热的Boost拥护者,也是C++社区忠心耿耿的支持者。他在C/C++ Users Journal上发表了许多有用而且好读的文章,最近,他也为The C++ Source写了一些文章,The C++ Source是一个传递C++社区声音的新的在线资源(请访问www.artima.com/cppsource)。在本书中,他提倡并且描述了Boost的一些关键组件,然后展示了它们是如何与C++标准库一道工作并且扩展C++标准库的。不要仅仅把本书看成是一本深入Boost的教程,还可以拿它来品尝一下将来版本的标准C++。爽一下吧!
《超越C++标准库:Boost库导引》:序的更多相关文章
- 《Java JDK 8 学习笔记》序
摘录自<Java JDK 8 学习笔记> 翻开一本书,无非是想从书中得到知识,只是为何你要得到书中的知识,才是我想知道的答案,而这个答案决定了你在取得知识的过程中是否快乐! 多数人在取得知 ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势
0.前言 从这篇随笔开始记录Java虚拟机的内容,以前只是对Java的应用,聚焦的是业务,了解的只是语言层面,现在想深入学习一下. 对JVM的学习肯定不是看一遍书就能掌握的,在今后的学习和实践中如果有 ...
- 《深入理解Java虚拟机》学习笔记
<深入理解Java虚拟机>学习笔记 一.走近Java JDK(Java Development Kit):包含Java程序设计语言,Java虚拟机,JavaAPI,是用于支持 Java 程 ...
- Java:NIO 学习笔记-2
Java:NIO 学习笔记-2 上一篇 NIO 学习笔记-1 看了 尚硅谷 的相应教程,此处又对比看了 黑马程序员 的课程 JAVA通信架构I/O模式,做了相应的笔记 前言 在 Java 的软件设计开 ...
- Java:NIO 学习笔记-1
Java:NIO 学习笔记-1 说明:本笔记是根据bilibili上 尚硅谷 的课程 NIO视频 而做的笔记 主要内容 Java NIO 简介 Java NIO 与 IO 的主要区别 缓冲区(Buff ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- Java多线程技术学习笔记(二)
目录: 线程间的通信示例 等待唤醒机制 等待唤醒机制的优化 线程间通信经典问题:多生产者多消费者问题 多生产多消费问题的解决 JDK1.5之后的新加锁方式 多生产多消费问题的新解决办法 sleep和w ...
- Java安全防御学习笔记V1.0
Java安全防御学习笔记V1.0http://www.docin.com/p-766808938.html
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
随机推荐
- eclipse编译hbase 1.3.1(转)
https://yq.aliyun.com/articles/59830 ,晚上回去试试...
- PL/SQL Developer连接本地Oracle 11g 64位数据库和快捷键设置
1.登录PL/SQL Developer 这里省略Oracle数据库和PL/SQL Developer的安装步骤,注意在安装PL/SQL Developer软件时,不要安装在Program Files ...
- ipython介绍及使用
1. IPython介绍 ipython是一个python的交互式shell,比默认的python shell好用得多,支持变量自动补全,自动缩进,支持bash shell命令,内置了许多很有用的功能 ...
- [leetcode-118]Pascal's triangle 杨辉三角
Pascal's triangle (1过) Given numRows, generate the first numRows of Pascal's triangle. For example, ...
- 细说JDK日志组件
1. 概述 JDK自带的日志组件在包java.util.logging下,如图: 2. 架构如上图所示,JDK日志组件核心元素包括:Logger,Handler,Filter和Formatter,他们 ...
- 清除 SQL Server Management Studio 服务器名称历史记录
Ø 前言 在开发过程中,经常使用 SQL Server Management Studio 连接本地或远程 SQL Server 服务器,时间长了可能有些名称就不用了或者重复了,SQL Server ...
- SCTP一到多式流分回射服程序
一.服务器程序 #include <stdlib.h> #include <string.h> #include <strings.h> #include < ...
- 关于Failed to check the status of the service com.taotao.service.ItemService. No provider available fo
原文:http://www.bubuko.com/infodetail-2250226.html 项目中用dubbo发生: Failed to check the status of the serv ...
- 九、uboot 代码流程分析---relloc_code
执行完 board_init_f 后,重新跳转回 _main 中执行. 9.1 relloc_code 前 9.1.1 gd 设置 在调用board_init_f()完成板卡与全局结构体变量 gd 的 ...
- 嵌入式开发-迅为4418开发板Android4.4.4实现ble功能
①.如果是迅为4418开发板:在4418/android/device/nexell/drone2/device.mk中添加: frameworks/native/data/etc/android.h ...