《超越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 ...
随机推荐
- SQL Server 备份到网络盘网络映射盘
declare @DBName nvarchar(max) declare @BakName nvarchar(max) --在这里修改数据库名称 select @DBName='[LFBMP.PO] ...
- 使用Ruby处理大型CSV文件
处理大型文件是一种内存密集型操作,可能导致服务器耗尽RAM内存并交换到磁盘.让我们看一下使用Ruby处理CSV文件的几种方法,并测量内存消耗和速度性能. Prepare CSV data sample ...
- redhat开启端口
设置端口:sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT 或 /etc/init.d/iptables -I INPUT -p tc ...
- springboot(十八):CORS方式实现跨域
资料 https://www.cnblogs.com/toutou/p/9843588.html
- Java8新特性 重复注解与类型注解
import java.lang.annotation.Repeatable; import java.lang.annotation.Retention; import java.lang.anno ...
- udp_server函数
#include <netdb.h> #include <stdlib.h> #include <string.h> #include <unistd.h&g ...
- redis整合Spring集群搭建及业务中的使用
1.redis安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: 第一步:redis的源码包上传到li ...
- JS算法练习四
JS算法练习 1.将使用空格分隔单词使用驼峰命名连接起来: var str="HELLO world welcome to my hometown"; /*--先输入一个有空格分隔 ...
- oracle 对对表匹配的进行修改匹配不上的可以进行新增 (MERGE INTO)
MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句. 通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询, 连接条件匹配上的进行UPDATE,无法匹配 ...
- Java SE之I/O流:知识框架