- 博客(2)
- 资源 (13)
- 问答 (1)
- 收藏
- 关注
Effective STL
STL和标准
我经常提及C++标准,因为《Effective STL》专注于可移植的,与标准一致的C++。理论上,我在这本书里演示的一切都可以用于每个C++实现。实际上,那不是真的。编译器的缺陷和STL实现凑合成防止一些有效的代码编译或表现出它们应该有的行为。那是很常见的情况,我描述了这些问题,而且解释了你应该怎么变通地解决他们。
有时候,最容易的变通办法是使用另一个STL实现。附录B给一个这种情况的例子。实际上,STL用得越多,编译器和库实现的区别就越重要。程序员在设法让合法的代码编译时遇到困难,他们通常责备他们的编译器,但对于STL,编译器可能是好的,而STL实现是不良的。为了强调你得依赖编译器和库实现的事实,我使用你的STL平台。一个STL平台是一个特定编译器和一个标准模板库特定实现的组合。在本书里,如果我提及一个编译器问题,你能确信我意思是编译器有问题。但是,如果我说你的STL平台有问题,你应该理解为“可能是编译器缺陷,可能是库缺陷,或许都有”。
我一般提及你的“编译器们”——复数。那是我长期相信你通过确保代码可以在多于一个的编译器上工作的方法来改进你的代码质量(特别是移植性)的产物。此外,使用多个编译器一般可以简化拆解由STL的使用不当造成的错误信息难题。(条款49致力于解码此类消息的方法。)
关于与标准一致的代码,我强调的另一个方面是你应该避免构造未定义行为。这样的构造可能在运行期做任何事情。不幸的是,这意味着它们可能正好做了你想要的,而那会导致一种错误的安全感。太多程序员以为未定义行为总会导致一个明显的问题,例如,一个分段错误或其他灾难性的错误。未定义行为的结果实际上更为狡猾,例如,破坏极少引用的数据。它们也可以通过程序运行。我发现一个未定义行为的好定义是“为我工作,为你工作,在开发和QA期间工作,但在你最重要的用户面前爆炸了”。避免未定义行为很重要,所以我指出了它会出现的通常情况。你应该训练你自己警惕这样的情况。
2012-09-15
LibraryFunctions
C++ Library Reference
The standard C++ library is a collection of functions, constants, classes, objects and templates that extends the C++ language providing basic functionality to perform several tasks, like classes to interact with the operating system, data containers, manipulators to operate with them and algorithms commonly needed.
2012-09-15
c语言深度解剖
c语言面试必备
以含金量勇敢挑战国内外同类书籍
陈正冲 石 虎 编著 审阅
作者简介:
陈正冲:湖南沅江人,毕业于长春光学精密机械学院(长春理工 大学)数学系.目前从事嵌入式软件开发和管理方面的工作. 石虎:湖南沅江人,毕业于吉林大学计算机系.目前为大连交通 大学计算机系讲师.
2012-08-30
老毛桃winpe_U盘装系统图解
如何使用U盘装系统图解!U盘winpe安装XP系统的方法
闲话不多说,咱直接入题
准备工作,1G以上的U盘一个,
Winpe 工具一个,个人推荐老毛桃winpe,下载地址http://www.duote.com/soft/8624.html
Ghost镜像文件(这个不用说了吧,能想到U盘装系统肯定都知道的)
可以开始了:插入U盘(最好把U盘里的东西清空,自己保存)
2011-07-08
wxPython中TextCtrl控件属性问题
2023-03-24
wxPython listctrl如何自动定位到某一行?
2016-12-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人