C++泛型编程与STL高级培训
 2011-08-20  13:56 
一、课程目标
C++作为一门多风格的程序设计语言,除了强大的面向对象支持外,泛型编程(模板机制)的支持更是极大程度上提高了C++的表现能力,现在模板的运用已成为C++类库、应用程序中自然且不可分割的一部分,渗透到各个角落。本次课程将深入、细致的讲解C++模板机制、STL、Boost相关类库的实现思路、手法以及其表现出的智慧,以企通过本次课程的学习,将这些经验自如地用到后续的软件开发中。这次课程关注:
- C++模板机制
 - STL和Boost部分类库的剖析
 
二、参训要求
参加本次课程的学员须具备以下能力:
- 本次课程假定学员有编程经历,使用C/C++、Java或其它语言实际编写过代码;
 - 能熟练使用Windows或Linux下的编译器(如g++)、调试器(如gdb)。
 
三、课程实践环境
- 学员自备电脑
 -  实践平台 (以下二者之一):
- Win32 / Visual Studio 2008 (或更新)
 - Linux 2.6.18+ x86-32 / GCC 4.1.2+ / Eclipse CDT 、vi
 
 
四、课程大纲
本次课程由以下几个部分构成:
 1、C++ 模板机制
- 关于C++模板
 - 类模板
 - 函数模板
 - 模板实例化
 - 模板参数
 - 使用模板参数指定策略
 - 特征类 (Traits classes)
 -  模板特化
- 完全特化
 - 部分特化
 
 - 类模板的派生
 - Curiously Recurring Template Pattern (CRTP)
 - 依赖名字:关键字typename和template的另一种用处
 
 2、STL 概要
- 什么是STL
 -  STL组件
- 容器
 - 算法
 - 迭代器
 - 函数对象
 - 适配器
 - 分配器
 
 - STL的能力与限制
 
3、STL容器
-  序列容器
- Vector
 - Deque
 - List
 
 -  有序关联容器
- Multisets
 - Sets
 - Multimaps
 - Maps
 
 -  无序关联容器
- Unordered Multisets
 - Unordered sets (Hashsets)
 - Unordered Multimaps
 - Unordered maps (Hashmaps)
 
 
4、STL迭代器
- 关于迭代器
 - 迭代器的操作
 -  迭代器类别
- Input Iterators
 - Output Iterators
 - Forward Iterators
 - Bi-directional Iterators
 - Random Access Iterators
 
 - Constant Iterators
 - Reverse Iterator
 
5、STL算法
- STL算法一览
 - 算法类别
 -  各类算法介绍
- 非修改性算法
 - 修改性算法
 - 排序算法
 - 集合算法
 - 堆算法
 
 
6、预与定义STL函数对象
- 预定义一元函数对象
 - 预定义二元函数对象
 - 判断式(Predicates)
 
7、STL适配器
- 适配器的概念
 -  容器适配器
- Stack
 - Queue
 
 -  迭代器适配器
- Inserters
 
 -  函数对象适配器
- Binders
 - Function Adapters
 - Negaters
 
 
五、时间安排
课程时间:2天,以每天6小时计,具体安排如下:
-  Day1
- 1 - C++ 模板机制
 - 2 - STL 概要
 - 3 - STL容器
 
 -  Day2
- 4 - STL迭代器
 - 5 - STL算法
 - 6 - 预与定义STL函数对象
 - 7 - STL适配器
 
 
六、课程资源
可获取的课程资源见:教学资源。