STL 容器和迭代器
C++ 标准分为两大部分:一是核心语言(Core language),二是库(Library)。所谓核心语言指的就是 C++ 的语法,我们已经花了将近八章的篇幅来讲解它。而现在我将第一次正式介绍 C++ 标准的库部分。C++ 标准要求的库,即 C++ 标准库,一般是伴随着编译器提供给程序员的一系列已编译好或尚未编译的代码,并在标准库头文件中对这些代码进行了声明。
C++ 标准库内容繁多,但最有用的部分就是所谓标准模板库(Standard Template Library, STL)这一部分。“标准模板库”是一个历史性的称谓,它是指在 C++ 创建时期,由 Alexander Stepanov 编写的一套基于模板的 C++ 库。这个库在 1994 年大部分被并入 C++ 标准,称之为标准模板库。
所以 STL 并不是指 C++ 标准库中带有模板的部分,而是指 C++ 标准库的一个较小的子集。
STL 的设计理念是这样的:一个程序的运行无非三件事情:存储数据、读写数据和操作数据。于是,STL 设计了“容器”这一抽象概念来存储数据,用“迭代器”来指示如何通过容器读写数据,最后设计了一系列“算法”了操作这些数据。在这一部分中,我们将简要地讲解 STL 中“容器”和“迭代器”相关的内容。