首先是iterator traits,這個是用來萃取迭代器的特性的
1#ifndef _stl_iterator_h_
2#define _stl_iterator_h_34
5 #include 6/*7
** iterator_traits----> 負責萃取迭代器的特性8*/
9namespace
zstd10;
12struct
outpt_iterator_tag{};
13struct forward_iterator_tag :public
inpt_iterator_tag {};
14struct bidirectional_iterator_tag :public
forward_iterator_tag {};
15struct random_access_iterator_tag :public
bidirectional_iterator_tag {};
1617 template18class pointer = t*, class reference = t&>
19struct
iterator20;
2728 template
29struct
iterator_traits30;
37 template
38struct iterator_traits39
;46 template
47struct iterator_traits48;
5556 template
57inline typename iterator::iterator_category
58 iterator_category(const iterator&it)
5963 template
64 inline typename iterator::value_type*
65 value_type(const iterator&it)
6669 template
70 inline typename iterator::difference_type*
71 difference_type(const iterator&it)
7275}76
#endif
然後是type traits,這個是用來萃取c++語言型別(type)的特性的
1#ifndef _type_traits_h_
2#define _type_traits_h_34
/*5** _type_traits----> 負責萃取型別t的特性6*/
7 #include 8
using
namespace
std;
9namespace
zstd
10 };
12struct _false_type };
1314 template
15struct
_type_traits16;
2324 template<>
25struct _type_traits26;
33 template<>
34struct _type_traits35;
42 template<>
43struct _type_traitschar>44;
51 template<>
52struct _type_traitschar>53;
60 template<>
61struct _type_traits62
;69 template<>
70struct _type_traits71;
78 template<>
79struct _type_traitsshort>80;
87 template<>
88struct _type_traits89;
96 template<>
97struct _type_traitsint>98;
105 template<>
106struct _type_traits
107;
114 template<>
115struct _type_traitslong>
116;
123 template<>
124struct _type_traitslong>
125;
132 template<>
133struct _type_traitslong
long>
134;
141 template<>
142struct _type_traits
143;
150 template<>
151struct _type_traits
152;
159 template<>
160struct _type_traitsdouble>
161;
168169 template
170struct _type_traits171
;178 template
179struct _type_traits
180;
187 template<>
188struct _type_traits
189;
196 template<>
197struct _type_traitschar*>
198;
205 template<>
206struct _type_traitschar*>
207;
214 template<>
215struct _type_traitschar*>
216;
223 template<>
224struct _type_traits
225;
232 template<>
233struct _type_traits
234;
241}
242#endif
SGI STL簡記 十 仿函式 函式物件
仿函式或函式物件 functional 仿函式也即函式物件,一種具有函式特質的物件,其主要用於stl的演算法中搭配使用,使得演算法實現更為靈活 此外,仿函式也類似於迭代器,也需要提供必要的相應型別,以支援適配 仿函式的相應型別主要有 函式引數的型別 函式返回值型別 stl中已提供了部分仿函式類 已定...
SGI STL的記憶體池
tl中各種容器都有乙個可選的模板引數 allocator,也就是乙個負責記憶體分配的元件。stl標準規定的allcator 被定義在memory檔案中。stl標準規定的allocator只是單純地封裝operator new,效率上有點過意不去。sgi實現的stl裡,所有的容器都使用sgi自己定義的...
關於SGI STL中的容器的簡介
sgi stl主要含有兩類容器 序列式容器和關聯式容器。標準 array build in vector,heap,priority queue 非標準 list,slist,deque 配接器 stack,queue。1.vector 單向開口連續線性動態空間,一般採用倍加擴容,分攤常數時間o 1...