diff --git a/ReadMe.md b/ReadMe.md index 0bb0bb6..0eb82e6 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -22,16 +22,28 @@ C++之所以变成一门层次丰富、结构多变、语法繁冗的语言, 本文的写作初衷,就是通过“编程语言”的视角,介绍一个简单、清晰的“模板语言”。我会尽可能的将模板的诸多要素连串起来,用一些简单的例子帮助读者学习这门“语言”,让读者在编写、阅读模板代码的时候,能像 `if(exp) { dosomething(); }`一样的信手拈来,让“模板元编程”技术成为读者牢固掌握、可举一反三的有用技能。 ###0.2 适宜读者群 -C++ Templates和Modern C++ Design的关系 + +因为本文并不是用于C++入门,例子中也多少会牵涉一些其它知识,因此如果读者能够具备以下条件,会读起来更加轻松: + +* 熟悉C++的基本语法; +* 使用过STL; +* 熟悉一些常用的算法,以及递归等程序设计方法。 + +此外,尽管第一章会介绍一些Template的基本语法,但是还是会略显单薄。因此也希望读者能对C++ Template最基本语法形式有所了解和掌握;如果会编写基本的模板函数和模板类那就更好了。 + +诚如上节所述,本文并不是《C++ Templates》的简单重复,与《Modern C++ Design》交叠更少。从知识结构上,我建议大家可以先读本文,再阅读《C++ Templates》获取更丰富的语法与实现细节,以更进一步;《Modern C++ Design》除了元编程之外,还有很多的泛型编程示例,原则上泛型编程的部分与我所述的内容交叉不大,读者在读完1-3章了解模板的基本规则之后便可阅读《MCD》的相应章节;元编程部分(如Typelist)建议在阅读完本文之后再行阅读,或许会更易理解。 ###0.3 版权 +本文是随写随即同步到Github上,因此在行文中难免会遗漏引用。本文绝大部分内容应是直接承出我笔,但是也不定会有他山之石。所有指涉内容我会尽量以引号框记,或在上下文和边角注记中标示,如有遗漏烦请不吝指出。 + +全文所有为我所撰写的部分,作者均保留所有版权。如果有需要转帖或引用,还请注明出处并告知于我。 + ## 1. Template的基本语法 ###1.1 Template Class的基本语法 ###1.2 Template Function的基本语法 ###1.3 整型也可是Template参数 -###1.4 类中类:灵活的模板定义 ## 2. 模板世界的If-Then-Else:特化与偏特化 ###2.1 实例化/特化类模板:从类模板到可以定义变量的具体类 @@ -53,11 +65,12 @@ C++ Templates和Modern C++ Design的关系 ###4.6 实战单元:实现元编程上的数据结构——以Vector为例 ## 5 关于模板,你还需要知道的其它常识 -###5.1 Template-Template Class -###5.2 技巧单元:高阶函数——从函数到函数的组合 -###5.3 实战单元:STL中的Allocator Rebinder -###5.4 像看堆栈一样的看出错信息 -###5.5 模板的症结:易于实现,难于完美 +###5.1 类中类:灵活的模板定义 +###5.2 Template-Template Class +###5.3 技巧单元:高阶函数——从函数到函数的组合 +###5.4 实战单元:STL中的Allocator Rebinder +###5.5 像看堆栈一样的看出错信息 +###5.6 模板的症结:易于实现,难于完美 alexandrescu 关于 min max 的讨论:《再谈Min和Max》