要求:熟悉使用STL/boost泛型数据结构及算法
C++标准库的一个强大之处就是它包含了各种各样的容器和算法,并且都是泛型(Generic)的,可以实现泛型编程(Generic Programming)。所谓泛型编程,就是在编程时不需要考虑具体数据类型,不需要寻找并使用类型与当前变量匹配的算法,而算法使用的数据结构,也就是容器,也不需要根据数据类型重复不同版本。
C++标准库中,容器和算法所在的标准库子集又叫标准模板库(Standard Template Library),简称STL。这个库包括3种类型的通用项:容器、迭代器和算法。算法是可以应用于不同数据结构的常用函数,其应用是通过迭代器来协调的,迭代器决定了算法能够应用于哪些类型的对象。有了STL,程序员就不必编写自己的类和函数,而能够利用预先打包好的通用工具,来解决现有的问题。
容器概述
容器是一种数据结构,存储具有相同类型的对象。不同类型的容器在其内部以不同的方式组织对象。STL中的容器分为顺序容器和关联容器两种。顺序容器通过元素的位置顺序存储访问,而这个顺序一般是由元素进入容器的顺序决定的。关联容器则通过键来查找键对应的元素。STL包括的容器有:deque、list、map、multimap、set、multiset、stack、queue、priority_queue和vector。
迭代器
对于STL中的容器来说,有一种通用的遍历方法—使用迭代器(Iterator)。迭代器是一个对象,用于引用存储在容器中的元素。因此,它是一个通用指针。迭代器是声明在每个容器类定义中的,因此在定义的时候我们需要在类型名前面加上具体的容器名和作用域操作符。在循环中使用迭代器取容器元素的时候,我们可以把它看作指针,并使用解引用操作即可。
容器元素的条件
容器元素的类型需要满足两个基本条件:一是支持赋值操作符,二是支持复制操作。
一些共通的操作
clear()函数