C++11/14 语言与库架构
课程介绍:
C++11(C++2.0) 是继C++98(C++1.0) 之后的第二个国际标准规格;自1.0进化至2.0,添加了很多新东西。C++14则是对C++11的若干小改善。C++2.0 在语言和标准库两方面都带来了很多新奇。荦荦大者有语言层面的 Variadic Templates, Lvalue reference..., 以及标准库层面的forward_list, std::array…,这些全都是本课程深入讲解的对象。本课程让学员对新特性有全面认识,并深入其中最重要的若干主题。培训时长:2天(12学时)
讲师介绍:
侯捷 台湾著名C++专家
侯捷是两岸著名技术教育者,计算机图书作者、译者、书评人。著有《深入浅出MFC》《多型与虚拟》《STL源码剖析》《无责任书评》三卷,译有众多脍炙人口的高阶技术书籍,包括Meyers的“Effective C++”系列。侯捷还兼任教职于元智大学(台湾)、同济大学(大陆)、南京大学(大陆)。侯捷老师的著作、讲座影响大陆整整一代C++程序员。
课程方式:
课程大纲:
第一讲:C++11/14 (C++2.0) 语言新特性
1-1.演进、开发环境与网络资源
1-2.Variadic Templates (这是C++11最重要的新特性,全面改变了标准库的写法。)
1-3.Spaces in Template Expression、nullptr and std::nullptr_t、Automatic Type Deduction with auto(上述三者之中最具实用价值的是 auto,能够为编写代码带来极大方便。)
1-4.Unifrom Initialization (初始化的作法终于有了统一。)
1-5.Initializer_list(上)(大幅改变标准库容器的初值设定方式;也值得你在应用程序中直接使用。)
1-6.Initializer_list(下)
1-7.Explicit for ctors taking more than one argument
1-8.Range based for statement (一个很方便的 loop 写法。)
1-9.=default, =delete (允许你 "使用默认的 Big-Three函数" 或 "放弃默认的 Big-Three函数"。)
1-10.Alias Template (也可称为 template typedef.)
1-11.Template template parameters (通过深入浅出的解释让你彻底了解这一范本高级用法。)
1-12.Type Alias
1-13.using, noexcept, override, final, declval, decltype
1-14.lambdas (一种比 function objects/functors 更便利的写法,其怪异的语法乍见之下令人困惑愕然。)
1-15.Variadic Templates (重回现场再一次学习这颗 C++11重磅炸弹,并以7种用法带您一窥堂奥。)
第二讲:C++11/14 (C++2.0) 标准库新部件
2-1.标准库源代码分布 (这是查看源代码的第一步。)
2-2.Rvalue references and Move Semantics(C++11最重要的新特性之一; 介绍何谓Rvalue;何谓Rvalue references;std::move()的意义与用法;如何写出move-aware class及其对容器的效能影响。)
2-3. Perfect Forwarding (介绍perfect forwarding和unperfect forwarding之间的差别; std::forward()的意义与用法, 以及perfect forwarding和 move semantics的关系。)
2-4. 写出一个move-aware class
2-5. Move-aware class对容器的效能测试
2-6. 容器 (谈所有容器的内核结构, 所有容器的新旧版本结构比较。)
2-7. Move-aware class对容器的效能测试
2-8. 旧容器Hashtable的内核结构及现实用途
2-9. 新容器Unordered的内核结构及现实用途
2-10. Hash function (这是使用Unordered容器的最大罩门;本节以观察string之hash function的实际运作过程和结果来彻底理解hash function)
2-11. 新容器Forward_list的内核结构及现实用途
2-12. 万用的Hash Functions (本节介绍源自 Boost 的一种万用型 hash function写法)
2-13. Tuple (一种异质容器,允许 objects of any types 被组合到一起。标准库之实现令人拍案叫绝。)
2-14. shared_pointer (介绍此种最被广泛使用的智能指针的用法及其内核结构。)
2-15. Type traits (介绍并示范如何使用神奇的 type traits 查知 object types 的诸多特性。)
2-16. Multi-threads library 简介