条款四十六:需要类型转换时请为模板定义非成员函数

  条款四十七:请使用traits classes 表现类型信息

    1.整合重载技术后,traits classes 有可能在编译期对类型执行if...else测试。

    2.STL共有五种迭代器分类

             1)Input迭代器只能向前移动一次一步,客户只可读取(不能涂写)它们所指的东西,而且只能读取一次。(模仿指向输入文件的阅读指针)

             2)Output迭代器一切只为输出,它们只向前移动,一次一步,客户只可涂写它们所指的东西,而且只能涂写一次。

               3)forward迭代器,可以做Input和Output所能做的每一件事,而且可以读或写其所指物一次以上。

             4)Bidirectional迭代器比forward更强大,除了可以向前移动还可以向后移动。set.multiset,map,multimap的迭代器都属于这种。

             5)random access迭代器,可以执行迭代器算术。也就是可以在常量的时间内向前或向后跳跃任意距离。(类似于指针算术)vector,deque和string提供的迭代器都是这一分类。

    3.迭代器类型的继承关系图如下:

  条款四十八:认识template元编程

    1.Template metaprogramming(TMP,模板元编程)是编写template-based C++程序并执行于编译期的过程。

    2.TMP有两个伟大的效力:第一,它让某些事情更容易。第二,由于Template metaprograms执行于C++编译期,因此可将工作从运行期转移到编译期。

    3.TMP已被证明是个“图灵完全”机器。意思好似他的威力大到足以计算任何事物。使用TMP你可以声明变量、执行循环、编写及调用函数。。。但这般构件相对于“正常的”c++对应物看起来很是不同。

    4.TMP的起手程序是在编译期计算阶乘。示范如何通过“递归模板具现化”实现循环,以及如何在TMP中创建和使用变量:

template<unsigned n>
struct Factorial
{
enum {value=n*Factorial<n->::value};
}; template<>
struct Factorial
{
enum{value=};
}; int main()
{
std::cout<<Factorial<>::value;//印出120
std::cout<<Factorial<>::value;//印出3628800
}

    5.使用TMP的优势:

          1)确保度量单位正确。

          2)优化矩阵运算。

          3)可以生成客户定制之设计模式。

    6.Template mataprogramming可将工作由运行期移往编译期,因而得以实现早期错误侦测的执行效率。

  条款四十九:了解new-handler的行为

    1.设计良好的new-handle函数必须做以下事情:

                    1)让更多内存可被使用。

                    2)安装另一个new-handle。

                    3)卸除new-handle。

                    4)抛出bad-alloc(或派生自bad_alloc)的异常。

                    5)不返回,通常调用abort或exit。

    2.set_new_handle允许客户指定一个函数,在内存分配无法获得满足时被调用。

  条款五十:了解new和delete的合理替换时机

    1.主要了解何时可在“全局性的”或“class专属的”基础上合理替换缺省的new和delete。

                          1)为了检测运行错误。

                          2)为了收集动态分配内存之使用统计信息。

                          3)为了增加分配和归还的速度。

                          4)为了降低缺省内存管理器带来的空间额外开销。

                          5)为了弥补缺省分配器中的非最佳齐位。

                          6)为了将相关对象成簇集中。

                          7)为了获得非传统的行为。

    2.有许多理由需要写个自定义的new和delete,包括改善效能、对heap运用错误进行调试、收集heap使用信息。

Effective C++ 读书笔记(46-50)的更多相关文章

  1. Effective STL 读书笔记

    Effective STL 读书笔记 标签(空格分隔): 未分类 慎重选择容器类型 标准STL序列容器: vector.string.deque和list(双向列表). 标准STL管理容器: set. ...

  2. Effective STL读书笔记

    Effective STL 读书笔记 本篇文字用于总结在阅读<Effective STL>时的笔记心得,只记录书上描写的,但自己尚未熟练掌握的知识点,不记录通用.常识类的知识点. STL按 ...

  3. effective c++读书笔记(一)

    很早之前就听过这本书,找工作之前读一读.看了几页,个人感觉实在是生涩难懂,非常不符合中国人的思维方式.之前也有博主做过笔记,我来补充一些自己的理解. 我看有人记了笔记,还不错:http://www.3 ...

  4. Effective Java读书笔记完结啦

    Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. ...

  5. Effective C++读书笔记(转)

    第一部分 让自己习惯C++ 条款01:视C++为一个语言联邦 一.要点 ■ c++高效编程守则视状况而变化,取决于你使用c++的哪一部分. 二.扩展 将c++视为一个由相关语言组成的联邦而非单一语言会 ...

  6. Effective java读书笔记

    2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己 计在16年要看12本书,主要涉及java基础.Spring研究.java并发.J ...

  7. Effective Objective-C 读书笔记

    一本不错的书,给出了52条建议来优化程序的性能,对初学者有不错的指导作用,但是对高级阶段的程序员可能帮助不是很大.这里贴出部分笔记: 第2条: 使用#improt导入头文件会把头文件的内容全部暴露到目 ...

  8. [Effective Java读书笔记] 第二章 创建和销毁对象(1~7)

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3537576.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...

  9. 【Effective C++读书笔记】序

    C++ 是一个难学易用的语言! [C++为什么难学?] C++的难学,不仅在其广博的语法,以及语法背后的语义,以及语义背后的深层思维,以及深层思维背后的对象模型: C++的难学还在于它提供了四种不同而 ...

  10. Effective Java 读书笔记(一):使用静态工厂方法代替构造器

    这是Effective Java第2章提出的第一条建议: 考虑用静态工厂方法代替构造器 此处的静态工厂方法并不是设计模式,主要指static修饰的静态方法,关于static的说明可以参考之前的博文&l ...

随机推荐

  1. spring4泛型初探----一个小例子

    泛型的出现,是为了让代码更规整. 例如 Set<String> set=new HashSet<>(); set.add("abc"); set.add(1 ...

  2. android 4G产品4G网络问题记录

    电信.联通.移动切换到LTE_4G都不能通话(提示无法连接到网络)能正常上网,电信EVDO_3G不能通话(提示无法连接到网络)能正常上网这个是正常的,LTE只是针对上网,EVDO也是数据. 目前移动4 ...

  3. java中,用json格式转换遇到问题

    将list转为JSONObject类,报 org/apache/commons/lang/exception/NestableRuntimeException是什么原因? 还需要导入这些包common ...

  4. Swift开发UITableView常用的一些细节知识点介绍

    <code class="objectivec"><strong><span style="font-size:18px;"> ...

  5. Leetcode_101_Symmetric Tree

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42087039 Given a binary tree, c ...

  6. 浅析GDAL库C#版本支持中文路径问题

    GDAL库对于C#的支持问题还是蛮多的,对于中文路径的支持就是其中之一(另一个就是通过OGR库获取图形的坐标信息). 关于C#支持中文路径,看过我之前博客的应该都不陌生,如果使用的是我修改过的GDAL ...

  7. VS2010安装Boost库

    source URL: http://stackoverflow.com/questions/2629421/how-to-use-boost-in-visual-studio-2010 While ...

  8. Eclipse搭建Android环境失败的解决方案

    今天在Eclipse上搭建Android开发环境,不仅在安装ADT的过程中老是出错,而且Android SDK下载后,打开SDK Manager时也无法链接到网页下载tools,网上查了好多方法,试了 ...

  9. ITU-T Technical Paper: 测量QoS的基本网络模型

    本文翻译自ITU-T的Technical Paper:<How to increase QoS/QoE of IP-based platform(s) to regionally agreed ...

  10. ngnix服务器搭建

    1.  到nginx官网上下载相应的安装包,http://nginx.org/en/download.html:下载进行解压,将解压后的文件放到自己心仪的目录下,我的解压文件放在了d盘根目录下,如下图 ...