一. 操作符重载
二. 类模板(对于各种参数类型都是通用的)
template<typename T>
Classcomplex
{
Private: T real,image;
};
使用时:
complex<double> c1;
complex<int> c2;
三. 函数模板:(对于各种类型都是通用的,但是相对于类中必须要有相应的操作符重载)
Template
Inline
const T& min(const T& a,const T& b){……};
其中,有操作符 < 的重载。
四. 特化specialization(之前都是通用的,对于某一种类,会有更加高效的做法)
计算机图形学(可以去看一下)
1. template<> struct_type_traits {};
2. _STL_TYPENAME_NULL struct hash<int>
3. template<> class allocator<void>
偏特化:partical specialization
泛化:Template<class T,class Alloc=alloc>
1. Template<class Alloc> class vector<bool , Alloc>
个数偏特化,可以使得效率更高
2. 泛化Template struct iterator_traits{}
范围偏特化
Template<class T> struct iterator_traits<T*>
Template<class T> struct iterator_traits<const T*>
五. 分配器allocator
Operator new() 和malloc()
默认使用的分配器:
Template<class _Ty,class _A=allocator<_Ty>>
六.容器之间的关系,并非继承,而是复合
Array(连续空间)、vector(连续空间)、list、deque、forward list (以前版本slist)、stack 、heap
Rb-treee(基础)、set、map、multiset、multimap……
后续还有还有深谈list、vector、array、forward list、deque、queue、stack、rb-tree、set、map、multiset、multimap、hash table,敬请期待。
网友评论