C模板库

2020-12-30 19:45:08

CTL旨在通过在ISO C99中实现以下STL容器来提高C99开发人员的生产率:

deq.h = std :: dequelst.h = std :: listpqu.h = std :: priority_queueque.h = std :: queueset.h = std :: setstk.h = std :: stackstr.h = std :: stringvec .h = std :: vector

#包括< stdio.h>#定义P#定义T int#包括< vec.h> int compare(int * a,int * b){return * b< *一种; } int main(void){vec_int a = vec_int_init(); vec_int_push_back(& a,9); vec_int_push_back(& a,1); vec_int_push_back(& a,8); vec_int_push_back(& a,3); vec_int_push_back(& a,4); vec_int_sort(& a,比较); foreach(vec_int,& a,it,printf("%d \ n&#34 ;, * it.ref);)vec_int_free(& a);}

具有内存所有权的类型需要省略定义P,并在包含容器之前将析构函数和复制构造函数的C ++等效函数声明为:

tests / test_c99.c:11:11:错误:未声明“ type_free”(此功能首次使用)11 | #定义T型

对于T型模板,对于所有测量,int型为CTL性能,纯色表示为CTL,虚线为STL。

由于可以从deq.h和vec.h分别推断出它们的性能特征,因此这些性能测量中省略了que.h,stk.h和str.h。

为了维护CTL,可以通过在容器名称上运行make来将模板化为int类型的容器输出到stdout,例如: STL std :: map不会在CTL中实现,因为映射仅对集合提供了轻微的语法改进。 STL std :: unordered_map和std :: unordered_set将不会在CTL中实现,因为首选了有序容器,即使这样做会降低性能。 多集和多图的STL变体将不会实现,因为类似的行为可以实现为集和第一个的合并。