STL笔记(1)——STL的一些组态
来源:互联网 发布:淘宝皇冠店出售 编辑:程序博客网 时间:2024/06/06 10:42
C++学习初见成效,开始钻研侯捷老师的《STL源码剖析》,现整理学习笔记,记录之。
STL的一些组态
STL六大组件分别为:
1. 容器 Containers
2. 算法 Algorithms
3. 迭代器 Iterators
4. 仿函数 Functors
5. 配接器 Adapters
6. 分配器 Allocators
不过在这之前侯捷老师先介绍了一些令人困惑的语法:
在STL源码分析中,提到组态(configurations),这里我直接理解为其中文翻译,配置,也就是说当编译器无法处理或者不支持一些情况时,进行一些配置,为预定义。
__STL_STATIC_TEMPLATE_MEMBER_BUG
如果编译器无法处理static member of template classes(模板类静态成员)就定义
__STL_CLASS_PARTIAL_SPECIALIZATION
如果编译器支持 partial specialization of class templates(模板类偏特化)就定义,所谓模板类偏特化,参考:http://blog.csdn.net/thefutureisour/article/details/7964682/
__STL_FUNCTION_TMPL_PARTIAL_ORDER
如果编译器支持partial ordering of function templates或者说partial specialization of function templates就定义。参考:https://msdn.microsoft.com/en-us/library/zaycz069.aspx 可以理解为对函数模板的重载的支持
__STL_MEMBER_TEMPLATES
如果编译器支持template members of classes 就定义,看英文就知道,模板类中嵌套模板
__STL_LIMITED_DEFAULT_TEMPLAES
用到前一个模板的模板形参的某一个具现体作为当前模板的模板形参的默认值
例如:
template<class T, class Sequence=deque<T> >
__STL_NON_TYPE_TMPL_PARAM_BUG
测试类模板是否使用费类型模板参数(non-type template parameters)
关于非类型模板参数:
http://blog.csdn.net/zhangxiao93/article/details/50747862
__STL_NULL_TMPL_ARGS
直接理解为 <>
比如:
class stack{ friend bool ooperator== __STL_NULL_TMPL_ARGS(const stack&,const stack&);//...};
展开为
class stack{ friend bool ooperator== <>(const stack&,const stack&);//...};
某个类模板的实例化版本与其友元函数模板有一对一的关系(如操作符重载)
__STL_TEMPLATE_NULL
即 template <> 显示的模板特化
比如
__STL_TEMPLATE_NULL struct hash<char>{...};
展开为
template<> struct hash<char>{...};
- STL笔记(1)——STL的一些组态
- 关于STL的一些笔记
- [STL]一些STL的学习笔记(持续更新)
- STL——常见的一些问题
- STL学习笔记1— —STL简述
- STL学习笔记— —STL简述
- STL源码分析一:组态
- 【笔记】STL源码剖析(1)——STL概论与
- 《STL源码剖析》学习笔记1——stl_config.h中和编译器相关的一些宏定义的解释
- STL的一些总结
- stl的一些事
- STL的一些东西
- 学习笔记(一)——STL
- 学习笔记(二)——STL
- 学习笔记(三)——STL
- STL学习笔记1—概述
- stl allocator 一些 心得笔记
- C++课程笔记(1)——Introduction to STL
- BZOJ_P2049&Codevs_P1839 [SDOI2008]Cave 洞穴勘测(LCT)
- 最简单的基于FFmpeg的移动端例子:Android 视频解码器
- 推送(远程Remote Notification)
- 【bzoj1604】: [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居
- 我的学习笔记--PHP篇
- STL笔记(1)——STL的一些组态
- Linux下编译《UNIX环境高级编程》的第一个程序时出错的处理方法
- 推送(本地Local Notification)
- 树的中序遍历(非递归实现)
- uva10763 - Foreign Exchange
- 238. Product of Array Except Self &构建乘积数组
- Android Fragment 真正的完全解析(下)
- @RequestMapping之用法
- 蒜头爬楼梯