libcstl简介
libcstl是一个应用于C语言编程的函数库,它将编程过程中经常使用的数据结构如向量、链表、集合、树等封 装成相应的数据结构并提供一系列的操作函数来操作保存在这些数据结构中的数据,同时它还将常用的算法如 排序、查找、划分等封装成相应的算法函数并提供迭代器来使两者之间建立联系方便使用。从libcstl的名字 就可以看出它于STL有一定的关系,是的libcstl的接口和实现都是模仿了STL。
libcstl的产生主要是基于使用C语言编程过程中经常要使用向量、链表、集合等数据结构和排序、查找、划分 等算法,但是对于这些数据结构和算法每次都要重复的实现,如果有一个通用的类似于STL的数据结构和算法 的库就可以节约时间和成本,这样libcstl就诞生了。
libcstl编译和安装
在libcstl-2.0.2中使用configure选项来支持2.0.的编译配置。关闭控制断言(--disable-assert)
定义这个选项可以去掉库中的断言.当库函数接受到非法参数时,断言就会报错,但是有断言的版本执行效率低 (非断言版本效率大约是有断言版本的 20~40 倍).
开启内存管理(--with-memory-management)
这个选项可以开启内存管理,默认情况下内存管理是关闭的。
配置 stack_t 适配器的底层实现(--enable-stack-implementation=ARGUMENT)
这个选项是配置 stack_t 适配器的底层实现的。ARGUMENT 作为 stack_t 的底层实现,ARGUMENT 可以是 vector(--enable-stack-implementation=vector)和 list(--enable-stack-implementation=list), 默认使用 deque_t 作为 stack_t的底层实现.
配置 queue_t 适配器的底层实现(--enable-queue-implementation=ARGUMENT)
这个选项是配置 queue_t 的底层实现,ARGUMENT 作为 queue_t 的底层实现,ARGUMENT 是 list(--enable-queue-implementation=list),默认使用 deque_t 为 queue_t 的底层实现.
配置 set_t 的底层实现(--enable-set-implementation=ARGUMENT)
配置 multiset_t 的底层实现(--enable-multiset-implementation=ARGUMENT)
配置 map_t 的底层实现(--enable-map-implementation=ARGUMENT)
配置 multimap_t 的底层实现(--enable-multimap-implementation=ARGUMENT)
以上四个选项是配置关联容器的底层实现的,ARGUMENT 的可选参数是 avl-tree,关联容器默认使用红黑树作为 底层实现(红黑树比 avl 树快 40%)。默认使用红黑树作为底层实现。
libcstl基本概念
libcstl由多个分组成,容器,迭代器,算法和函数 容器: 容器以某种结构形式管理数据的集合,每一种容器都有各自的特点. 迭代器: 迭代器与容器相关联,应用与容器或容器的子集,它的主要好处在于为容器提供了一个统一的接口.迭代器是容器 和算法之间的桥梁,它使得算法独立于特定的容器. 算法: 算法是对数据集合进行某些操作,它可以排序,查找,修改或其他一些操作.算法使用迭代器作为输入,这样算法可 以独立于容器,实现在任意容器上的操作.同时算法还使用特定的函数对容器中的数据进行特定的操作. 函数: 函数只是规定了算法中使用的函数形式,并且定义了一些算法中常用的函数,可以作为算法的自定义规则.容器
容器可以用来排序数据,管理和存储数据,所以为了不同的目的libcstl提供了不同的容器.容器分为: 序列容器: 序列容器主要用来存储和管理数据,容器中的