C++标准库的重要组成部分,不仅是一个可复用的组件库,还是一个包含数据结构和算法的软件框架
容器
序列式容器:string、vector、list、deque、array(C++11)、forward_list(C++11)关联式容器:set、multiset、unordered_set、unordered_multiset、map、multimap、unordered_map、unordered_multimap适配器
适配器有三种:改变容器接口的空间适配器、改变迭代器接口的迭代器适配器、改变仿函数接口的仿函数适配器STL提供了stack、queue、priority_queue三种容器适配器算法
STL算法有上百种,我们常用算法有sort、find、copy等,从实现的角度来说算法是一种function template(函数模板)
迭代器
迭代器提供一种方法能够访问容器的各个元素,从而不需要暴露容器背部,是容器与算法的粘合剂从实现的角度来看,迭代器是将operator*、operator->、operator++、operator--、operator==等指针操作重载的class template(类模板)每种容器都有自己的迭代器,这些迭代器能够了解容器内部的数据结构仿函数
仿函数是一种行为类似函数,但实际是重载了operator()的类或类模板
#include <iostream> using namespace std; class Add { public: int operator()(int x, int y){ return x + y; } }; int main() { Add a; cout << a(3, 4) << endl; return 0; } 仿函数比一般函数灵活仿函数有类型识别,可以作为模板参数仿函数执行速度比一般函数和指针快空间配置器
负责空间配置、管理、释放
六大组件的关系
容器通过空间配置器获取存储空间算法利用迭代器向容器获取数据仿函数协助算法完成不同功能适配器可以修改容器、迭代器、仿函数的接口