Boost核心类库精讲
一、课程目标
Boost是由C++标准委员会成员发起、众多C++业界高人参与设计并实现的一个涉及面广、质量高且业已广泛使用的C++标准后备库,其中 TR1已经被纳入C++0x标准库。不论从风格和内容组织上讲,都可以认为Boost项目是C++标准库的延伸。本次课程撷取一系列重要的类库进行深入的讲解,涉及的类库如下:
- 容器与数据结构;
- 字符串算法和文字处理;
- 内存管理相关;
- 函数对象与高阶编程;
- I/O
- 一些实用类库
二、参训要求
参加本次课程的学员须具备以下能力:
- 熟练掌握C++语法,理解C++面向对象和泛型(模板)机制;
三、课程实践环境
- 学员自备电脑
- 实践平台 (以下二者之一):
- Win32 / Visual Studio 2008 (或更新)
- Linux 2.6.18+ x86-32 / GCC 4.1.2+ / Eclipse CDT 、vi
- Boost 1.47.0+
注:在上课之前,学员须搭建好上述开发实践环境,如有困难,可以在开课前通过E-Mail或MSN、QQ等方式与讲师沟通。
四、课程大纲
本次课程由以下几个部分构成:
1、Boost类库概要
- Boost的发展
- Boost与C++0x(现在的C++2011标准)
- Boost类库组织
- Boost类库的适用范围
2、容器与数据结构
- array:STL风格的定长数组
- unordered:基于hash_table的关联容器,hash_map、hash_set、multi_hash_map、multi_hash_set
- bimap:双向map
- mutli_array:多维数组
- pointer container:指针容器
- property_tree:适合用于读/写配置文件的容器
- 更多实用数据结构简介
3、字符串算法与文字处理
- lexical_cast:类型转换的类模板
- string_algos:字符串算法库,如查找、匹配、替换等操作
- tokenizer:强大的字符串分割工具
- regex:强大而易用的正则表达式库,支持perl、sed、awk等正则表达式语法
4、函数对象与高阶编程
- 回顾std::bind1st()、std::bind2nd()、std::mem_fun()、std::ptr_fun()等适配器
- bind和mem_fn:C++标准库的binder增强版
- ref:对象引用的包装器
- Function:函数概念的泛化,函数对象的包装器,可以实现函数的延迟调用和回调
- lambda:匿名函数对象,可以很大程度上减少显式定义函数和函数对象的需求
- signal2:线程安全的Signal-Slot机制 (Publishers → Signals/Subscribers → Slots),即Observer模式的实现;
5、内存管理
- smart pointers:boost智能指针,scoped_ptr、shared_ptr
- pool:内存池
6、I/O
- serializtion:序列化,将C++对象的序列化和反序列化,支持的格式有文本格式、xml格式、以及可移植的二进制格式
- format:C printf格式的输入/输出格式化操作,拥有更好的类型安全和容错能力
- iostreams:C++标准库iostream的补充
7、实用类库
- date_time:日期时间库
- system:操作系统支持
- filesystem:可移植的文件系统访问、操作
- program_options:应用程序命令行参数、选项设置以及获取实用工具
- timer:定时器
五、时间安排
课程时间:2天,以每天6小时计,具体安排如下:
- Day1
- 1 - Boost类库概要
- 2 - 容器与数据结构
- 3 - 字符串算法与文字处理
- 4 - 函数对象与高阶编程
- Day2
- 5 - 内存管理
- 6 - I/O
- 7 - 实用类库
六、课程资源
可获取的课程资源见:教学资源。