STL笔记(1)——STL的一些组态
2016-02-26 22:09
309 查看
C++学习初见成效,开始钻研侯捷老师的《STL源码剖析》,现整理学习笔记,记录之。
1. 容器 Containers
2. 算法 Algorithms
3. 迭代器 Iterators
4. 仿函数 Functors
5. 配接器 Adapters
6. 分配器 Allocators
不过在这之前侯捷老师先介绍了一些令人困惑的语法:
在STL源码分析中,提到组态(configurations),这里我直接理解为其中文翻译,配置,也就是说当编译器无法处理或者不支持一些情况时,进行一些配置,为预定义。
__STL_LIMITED_DEFAULT_TEMPLAES
用到前一个模板的模板形参的某一个具现体作为当前模板的模板形参的默认值
例如:
关于非类型模板参数:
http://blog.csdn.net/zhangxiao93/article/details/50747862
比如:
展开为
某个类模板的实例化版本与其友元函数模板有一对一的关系(如操作符重载)
比如
展开为
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>{...};
相关文章推荐
- 命令行清空垃圾回收箱
- 238. Product of Array Except Self &构建乘积数组
- POJ 3281 Dining(最大流)
- 推送(本地Local Notification)
- 机器学习之K-近邻算法(kNN算法)
- uva10763 - Foreign Exchange
- @RequestMapping之用法
- Android Fragment 真正的完全解析(下)
- shell编程练习001(20160226)
- 函数:声明和表达式
- 最简单的基于FFmpeg的移动端例子:Android 视频解码器
- java中IO的用法
- 【bzoj1604】: [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居
- 编程知识汇总--OpenAL
- 2016
- BZOJ_P2049&Codevs_P1839 [SDOI2008]Cave 洞穴勘测(LCT)
- Property 'date' not found on type java.lang.String] with root cause解决方案
- 添加、删除约束
- 监听Android系统Log
- 图片查看器-向左 向右 切换图片或内容