libcstl


libcstl是使用标准C编写的一个通用的数据结构和常用的算法库,它模仿SGI STL的接口和实现。

libcstl项目官网http://libcstl.org/, libcstl项目已经迁移到github,项目地址https://github.com/activesys/libcstl

发布libcstl-2.0.2

你可以从GettingStartedGuide开始了解libcstl。

你可以加入libcstl QQ群(63779856)和大家一起讨论libcstl的使用和开发,这里欢迎你。

你还可以从ReleaseNote了解到新版本解决了什么问题,以及做出了什么改变。

你还可以从TODO中了解到下一个版本libcstl将有哪些改变。

如果你想加入,可以直接发送邮件给我activesys.wb@gmail.com也可以直接将你发现的问题、你的意见、你的看法发布到issues中。

如果你想帮助libcstl,TaskList中列举了一些任务,你可以任意选择其中的任务,我非常高兴得到你的帮助。

这里Thanks是曾将帮助过我的人,我们感谢他们。

谢谢大家,我会继续努力!

  1. libcstl是使用标准C编写的通用的数据结构和常用算法的库, 它模仿STL的接口形式, 包括序列容器,关联容器,容器适配器,迭代器,函数,算法等.libcstl为C编程中的数据管理提供了方便易用的程序库。
  2. libcstl分为容器,迭代器,函数和算法四部分,此外2.0版本还添加了类型机制,这是一种为用户提供了方便使用自定义类型的机制。
  3. 容器一种用于保存数据的类型,按照功能分为序列容器,关联容器和容器适配器。序列容器是按照数据插入的顺序保存数据,关联容器中保存的数据是根据某种规则排序的,容器适配器是在容器的基础上对容器进行封装从而实现特定的功能,容器适配器不支持迭代器操作,因此适配器也不能够用于算法操作。
  4. 迭代器表现的是一种指针的语义,它是对位置操作的一种类型,但是迭代器是通用的,通过迭代器可以实现对任何容器的位置操作,同时它也是容器和算法的桥梁,算法通过迭代器对容器中的数据进行操作。
  5. 算法是通用的,它通过迭代器来操作数据区间中的数据,这样就可以对任何符合要求的容器以及数据区间应用算法。正式因为通用的关系,相同功能的算法和容器本身的操作函数,后者更高效。
  6. 函数以及谓词是规范算法行为的,可以使用特定的函数或者算法来改变算法的行为,带有if后缀的算法都要求使用函数或者谓词。
  7. 字符串是一种特殊的容器,它只保存字符类型,同时也支持许多针对字符串特有的操作。
  8. 类型机制是2.0添加的新功能,它为用户使用自定义类型提供了便利,可以让用户像使用基本类型一样使用自定义类型。

libcstl 2与1相比有了很大的改进,下面列出了不同点: | 类型和功能 | 1 | 2 | 说明 | |:----------|:------|:------|:-------| |deque_t |支持 |支持 | | |list_t |支持 |支持 | | |vector_t |支持 |支持 | | |slist_t |支持 |支持 | | |set_t |支持 |支持 | | |multiset_t|支持 |支持 | | |map_t |支持 |支持 |更新了默认的数据比较规则。| |multimap_t|支持 |支持 |更新了默认的数据比较规则。| |hash_set_t|支持 |支持 |更新了默认的哈希函数。| |hash_multiset_t|支持 |支持 |更新了默认的哈希函数。| |hash_map_t|支持 |支持 |更新的默认的哈希函数和默认的数据比较规则。| |hash_multimap_t|支持 |支持 |更新的默认的哈希函数和默认的数据比较规则。| |priority_queue_t|支持 |支持 | | |queue_t |支持 |支持 | | |stack_t |支持 |支持 | | |多种iterator_t|支持 |支持 | | |range_t | |支持 |一种表示数据范围的类型。| |数值算法 |支持 |支持 | | |通用算法 |支持 |支持 | | |针对基本类型的函数 |支持 |支持 | | |针对libcstl内部类型的函数| |支持 |增加了针对容器以及工具类型的函数和谓词。| |string_t |支持 |支持 | | |pair_t |支持 |支持 |更新了默认的数据比较规则。| |bool_t |支持 |支持 | | |支持c style字符串| |支持 |增加了对于c style字符串类型的支持。| |支持用户自定义类型 |部分支持 |支持 |通过类型注册机制完善了对用户自定义类型的支持。| |类型注册 | |支持 |增加了类型注册和类型复制功能。| |支持Linux |支持 |支持 | | |支持Windows | |支持 |添加了VS2005和VS2008的编译工程。|

Project Information

Labels:
C STL 数据结构 算法 SGI Linux Windows