《超越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 ...
随机推荐
- nGrinder TestRunner XFF / X-Forwarded-For
s 我们在压测请求报文里面带了这个"x-forward-for":"10.24.51.132"这个字段,所以我们所有的压测请求穿透到应用系统的时候,应用系统上采 ...
- jdk7 并行计算框架Fork/Join
故名思义,拆分fork+合并join.jdk1.7整合Fork/Join,性能上有大大提升. 思想:充分利用多核CPU把计算拆分成多个子任务,并行计算,提高CPU利用率大大减少运算时间.有点像,Map ...
- MapReduce实现词频统计
问题描述:现在有n个文本文件,使用MapReduce的方法实现词频统计. 附上统计词频的关键代码,首先是一个通用的MapReduce模块: class MapReduce: __doc__ = ''' ...
- NPOI导出Excel2007-xlsx
今天在用npoi导出xls时会报错,经过在网上查找资料,找到一篇博客文章介绍的,原文地址https://www.cnblogs.com/spring_wang/p/3160020.html 1.今天再 ...
- Servlet 起航 文件上传 中文文件名下载
@WebServlet(name = "ticketServlet",urlPatterns = {"/tickets"},loadOnStartup = 1) ...
- orcle查看表空间数据文件使用情况
-- 查看表空间数据文件使用情况select a.*, round(a.usedgb/a.maxgb*100) || '%' usedPer from (select t.TABLESPACE_NAM ...
- Nmap扫描基础常用命令(包含进阶使用)
Nmap扫描常用命令 - Nmap scans common commands 1.扫描单个目标 nmap ip 如:nmap 192.168.0.101 2.扫描多个目标 nmap ip1 ip2 ...
- [C++]2-6 排列
/* 排列(Permutation) 用1,2,3,...,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi = 1:2:3. 按照"abc def ...
- 【tmos】使用joda-time来个格式化时间
代码 @Test public void test(){ DateTime dateTime = new DateTime(); String str = dateTime.toString(&quo ...
- C - Kite URAL - 1963 (几何+四边形判断对称轴)
题目链接:https://cn.vjudge.net/problem/URAL-1963 题目大意:给你一个四边形的n个点,让你判断对称点的个数(对称轴的个数*2). 具体思路:感谢qyn的讲解,具体 ...