编程交流与学习--More Effective C++的学习-Item M35:让自己习惯使用标准C++语言

ISO/ANSI C++标准是厂商实现编译器时将要考虑的,是作者们准备出书时将要分析的,是程序员们在对C++发生疑问时用来寻找权威答案的。

C++的这些变化在标准运行库的变化面前将黯然失色。此外,标准运行库的演变从没象语言本身这样被宣扬过。例如,《The Design and Evolution of C++》几乎没有提及标准运行库。讨论运行库的书籍都有些过时,因为运行库在1994年后发生了非常巨大的变化。

标准运行库的功能分为下列类别(参见Effective C++ Item 49:

l         支持标准C运行库。不用担心,C++仍然记得它的根源。进行了一些细微的调整,使得C++版本的C运行库顺应了C++更严格的类型检查,但其功能和效果,在C运行库是怎么样的,在C++中还是怎么样。

l         支持string类型。标准C++运行库实现组的领衔人物Mike Vilot被告知“如果没有一个标准的string类型,那么将血流于街!”(有些人是如此激动。)平静一下,把板斧和棍子放下--标准C++运行库有了string类型。

l         支持本地化。不同的文化有不同的字符集,以及在显示日期和时间、排序字符串、输出货币值……等等时有不同的习惯。标准运行库对本地化的支持便于开发同时供不同文化地区使用的程序。

l         支持I/O操作。流运行库仍然有部分保留在C++标准中,但标准委员会作了小量的修补。虽然部分类被去除了(特别是iostramfstram),部分类被替换了(例如,以string为基础的stringstream类替换了以char*为基础的strstream类,现在已不提倡使用strstream类了),但标准流类的基本功能含概了以前的实现的基本功能。

l         支持数学运算。复数,C++教课书必谈的东西,最终纳入了标准运行库。另外,运行库包含了特别的数组类(valarray)以免混淆。这些数组类比内建类型的数组有更好的性能,尤其在多CPU系统下。运行库也提供了部分常用的运算函数如加法和减法。

l         支持通用容器和运算。标准C++运行库带了一组模板类和模板函数,称为标准模板库(STL)。STL是标准C++运行库中最革命性的部分。我将在下面概述它的特性。

在介绍STL前,必须先知道标准C++运行库的两个特性。

第一,在运行库中的几乎任何东西都是模板。

另外需要知道的是:标准运行库将几乎所有内容都包含在命名空间std中。

标准模板

标准C++运行库中最大的新闻就是STL,标准模板库。

STL很可能影响很多--恐怕是绝大多数--C++运行库的结构,所以熟悉它的基本原理是很重要的。它们并不难理解。STL基于三个基本概念:包容器(container)、选择子(iterator)和算法(algorithms)。包容器是被包容对象的封装;选择子是类指针的对象让你能如同使用指针操作内建类型的数组一样操作STL的包容器;算法是对包容器进行处理的函数,并使用选择子来实现的。

在你能写自己的STL兼容模板前,你必须掌握更多的STL规则。标准C++运行库比C运行库丰富得太多了,花时间来熟悉它是值得的(参见Item E49)。此外,掌握设计运行库的原则(通用、可扩充、可定制、高效、可复用)也是值得的。通过学习标准C++运行库,你不光涨了知识知道有什么现成的可用在自己的软件中,你也将学到如何更高效地使用C++的特性,也能掌握如何设计更好的代码库。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值