6大组件
- 容器
- vector
- list
- deque
- set
- map
- 从实现的角度,STL容器是class template
- 算法
- sort
- search
- copy
- ...
- 从实现的角度,STL算法是function template
- 迭代器
- 容器与算法之间的“胶合剂”
- 所谓的“泛型指针”
- 所以容器都附带有自己的专属迭代器
- 从实现的角度,STL迭代器是讲operator*,operator->,operator++,operator--等指针相关操作予以重载的calss template
- 仿函数
- 行为类似函数
- 可作为算法的某种策略
- 一般函数指针可视为侠义的仿函数
- 从实现的角度,仿函数是重载了operator()的class或者class template
- 配接器
- queue
- stack
- 用来修饰容器、仿函数、迭代器接口的东西
- 配置器
- 负责空间配置与管理
- 从实现的角度,配置器是一个实现了动态空间配置、空间管理、空间释放的class template
组态
简介
stl_config.h
- 不同的编译器对于C++语言的支持程度是不一样的,为了具备广泛移植能力,SGI STL定义了这个环境组态文件
- 其中的许多宏定义,在预编译的时候,通过这些宏定义来编译出对应平台的程序
内容
__STL_STATIC_TEMPLATE_MEMBER_BUG
如果编译器不支持static members of template classes
则定义__STL_STATIC_TEMPLATE_MEMBER_BUG
__STL_CLASS_PARTIAL_SPECIALIZATION
如果编译器支持局部特殊化的类模板
则定义__STL_CLASS_PARTIAL_SPECIALIZATION
__STL_FUNCTION_TEMPL_PARTIAL_ORDER
如果编译器支持部分排序函数模板
则定义__STL_FUNCTION_TEMPL_PARTIAL_ORDER
__STL_EXPLICIT_FUNCTION_TMPL_ARGS
如果编译器支持显示调用模板函数的模板参数
则定义__STL_EXPLICIT_FUNCTION_TMPL_ARGS
__STL_MEMBER_TEMPLATES
如果编译器支持类模板成员
则定义__STL_MEMBER_TEMPLATES
__STL_LIMITED_DEFAULT_TEMPLATES
如果编译器不能根据前一个模板参数设定后面的默认模板参数
则定义__STL_LIMITED_DEFAULT_TEMPLATES
__STL_NON_TYPE_TMPL_PARAM_BUG
如果编译器处理模板函数的non-type模板参数类型推断有困难
则定义__STL_NON_TYPE_TMPL_PARAM_BUG
__STL_NULL_TMPL_ARGS
__STL_TEMPLATE_NULL
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ C++20_第一篇06/30
- ♥ C++标准模板库编程实战_算法和随机数12/08
- ♥ C++14_第一篇12/14
- ♥ Effective C++_第四篇07/02
- ♥ C++14_第二篇06/29
- ♥ 包管理器:设计与实现09/18