引言:
C++有一段业内的话:不懂STL,那你就不能说自己会C++。可见STL的学习十分重要,本文将带你带你初识STL。
1. 什么是STL
vector
、 string
、 iostream
等都是在 std
命名空间中定义的。当你想要使用这些库中的元素时,你需要使用 std::
前缀,或者通过 using
声明或指令来引入特定的名称到当前作用域。2. STL的版本
3. STL的六大组件
-
容器(Containers):容器是用于存储数据的数据结构,STL 提供了多种不同类型的容器,如
vector
、list
、deque
、set
、map
等。每种容器都有其特定的用途和性能特点,例如vector
提供快速的随机访问,而list
提供快速的插入和删除操作。 -
迭代器(Iterators):迭代器是一种用于遍历容器中元素的对象,它提供了一种通用的方式来访问容器中的数据,而不需要关心容器底层的数据结构。STL 容器都提供了相应的迭代器,使得算法可以不依赖于具体的容器类型。
-
算法(Algorithms):STL 提供了一系列通用算法,这些算法独立于容器类型,可以用于任何提供了相应迭代器的容器。这些算法包括排序、搜索、替换、合并等操作,如
sort
、find
、replace
、merge
等。 -
函数对象(Functors):也称为仿函数,是可以像函数一样调用的对象,通常用于在算法中传递操作。
-
适配器(Adapters):用于修改或适配容器、迭代器或函数对象的接口,如
queue
和priority_queue
。 -
分配器(Allocators):用于管理内存分配和释放的类,允许容器使用自定义的内存管理策略。
4. STL的重要性
STL由于含有大量大数据结构和算法,因此解题应用十分广泛。
5.如何学习STL
对于这部分,引用书里的一段话:
我个人于1998年开始潜心研究泛型技术和STL,本书英文版《TheC++StandardLibrary》甫一出版便成为我学习 C++标准程序库的最重要案头工具书之一。小有心得之后,我写过数篇相关技术文章,从来离不开本书的影响和帮助。我曾经把STL(代表泛型技术目前最被广泛运用的一个成熟产品,也是C++标准程序库的绝大成分)的学习比喻为三个境界(或层次):
第--境界:熟用 STL
第二境界:了解泛型技术的内涵与 STL的学理乃至实作
第三境界:扩充 STL
不论哪一个阶段,你都能够从本书获得不同程度的帮助。