1 STL概论与版本简介
1.8 SGI STL文件分布
C++标准规范下的C头文件(无扩展名),如cstdio,cstdlib等;
C++标准程序库中不属于STL范畴者,如stream,string;
STL标准头文件(无扩展名),如vector,deque,list等;
C++标准定案前,HP标准规范的STL头文件,如vector.h,deque.h等;
SGI STL内部文件(STL真正实现于此),例如stl_vector.h,stl_xxx.h。
备注:SGI -- Silicon Graphics [Computer System] Inc. 硅图[计算机系统] 公司。
1.9 令人迷惑的组态
组态设置文件<stl_config.h>,包含于<vector>等头文件中。
参考链接:http://www.cnblogs.com/feisky/archive/2009/11/04/1596203.html
组态3:__STL_STATIC_TEMPALTE_MEMBER_BUG:模板类中的静态变量。(对应于参考链接中1)
组态5:__STL_CLASS_PARTIAL_SPECIALIZETION:一般化设计之外,对某些参数做特殊设计。(对应于2)注意:全局函数、类的成员函数不能半特化。
组态6:__STL_FUNCTION_TMPL_PARTIAL_ORDER:类模板与函数模板。(对应于3)
组态8:__STL_MEMBER_TEMPLATES:类模板中包含成员函数模板。(对应于4)
组态10:__STL_LIMITED_DEFAULT_TEMPLATES:根据前一个模板参数,设置下一个参数的默认值。(对应5)
组态11:__STL_NON_TYPE_TMPL_PARAM_BUG:模板中使用non-type模板参数(如size_t,int)。(对应6)
其他:__STL_NULL_TMPL_ARGS(定义为<>或为空,bound friend template friend)。(对应7)
__STL_TEMPLATE_NULL(定义为template<>或为空):如GCC允许不指定template<>来进行特化。
注意1:对于静态常整量(可以是int、long、char),可以直接在类中赋予初值,如static const long data = 3L;
注意2:前置++与后置++(可参考《more effective C++》):
//prefix ++
INT& operator++(){
++(this->m_i);
return *this;
}
//postifx ++
const INT operator++(int){
INT temp = *this;
++(*this);
return temp;
}