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适配器
六、课程资源
可获取的课程资源见:教学资源。