C++泛型编程与STL高级培训

一、课程目标

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适配器

六、课程资源

可获取的课程资源见:教学资源。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。