# cxl **Repository Path**: Lamdonn/cxl ## Basic Information - **Project Name**: cxl - **Description**: cxl(c contain extend library,意为C语言容器扩展库),这是一个C语言模板库,在C语言开发中很多功能模块都是重复开发的,重复开发就意味着开发的成本升高,可靠性降低。 - **Primary Language**: C - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 11 - **Forks**: 7 - **Created**: 2022-12-03 - **Last Updated**: 2026-10-21 ## Categories & Tags **Categories**: utils **Tags**: None ## README # cxl 介绍 [English version](README.md) ## 介绍 cxl(c **c**ontain e**x**tend **l**ibrary,意为C语言容器扩展库),这是一个C语言模板库,在C语言开发中很多功能模块都是重复开发的,重复开发就意味着开发的成本升高,可靠性降低。 cxl作为一个模板库,提供了类似C++ STL的功能,包含了常用的容器,而且容器在合理使用的情况下可以通用任意的数据类型。比如,链表的使用,常用的用法就是需要int型的链表,就针对int型的写一遍增删改查,换一种类型char型,又要重新写一套,如果一个项目中只需用到一个类型的链表就还好,万一项目要用到多种类型的呢。而在C++STL里面,就用list来封装了链表,想要什么类型就创建什么类型即可。 cxl的最初目的也就是提高在C语言开发中代码的复用性、通用性、便利性,方便在其他项目直接拿来就用。 ## 组成 从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器)。 * 容器 | cxl容器 | 封装对象 | | :-----: | :------: | | xstring | 字符串 | | xvector | 数组 | | xqueue | 队列 | | xstack | 堆栈 | | xdeque | 双端队列 | | xlist | 链表 | | xset | 集合 | | xmap | 映射 | * 迭代器在cxl里面,提供了针对各个容器的通用迭代器。在在连续地址的容器中可以直接随机访问地址来遍历容器,但是在链式结构的容器中,容器的遍历就需要通过迭代器来访问。迭代器为算法和容器之间提供了对接媒介。 * 算法 各个容器里面基本都包含了其对应的增删改查的操作,除此cxl提供了通用的算法,包含排序、计数、查找等。 ## 框架 ### 编程思想 cxl采用了面向对象的编程思想,所有的容器都被定义成了一个类(比如,xqueue类),每个类包含了这个类专属的方法和成员(比如,xqueue的xqueue_xxx进行命名),cxl所有的类都是继承于 `xobject`父类的,也就是所有的容器都可以强转为 `xobject`类来使用需要传入 `xobject`参数的方法(比如,`int xtype(xobject object);`方法,可以将一个对象强转为 `xobject`类获取这个对象是哪个类)。 # 使用 - [总览与用户参考手册](doc/[CXL][Manual]%20User%20Reference%20Manual.md) - [开发者规范手册](doc/[CXL][Manual]%20Developer%20Specification%20Manual.md) - [Common 通用接口说明](doc/[CXL][Manual]%20User%20Reference%20Manual%20-%20Common.md) - [str 字符串使用说明](doc/[CXL][Manual]%20User%20Reference%20Manual%20-%20xstring.md) - [vector 动态数组使用说明](doc/[CXL][Manual]%20User%20Reference%20Manual%20-%20xvector.md) - [queue 队列使用说明](doc/[CXL][Manual]%20User%20Reference%20Manual%20-%20xqueue.md) - [stack 栈使用说明](doc/[CXL][Manual]%20User%20Reference%20Manual%20-%20xstack.md) - [deque 双端队列使用说明](doc/[CXL][Manual]%20User%20Reference%20Manual%20-%20xdeque.md) - [list 链表使用说明](doc/[CXL][Manual]%20User%20Reference%20Manual%20-%20xlist.md) - [set 集合使用说明](doc/[CXL][Manual]%20User%20Reference%20Manual%20-%20xset.md) - [map 映射表使用说明](doc/[CXL][Manual]%20User%20Reference%20Manual%20-%20xmap.md) - [iterator 迭代器使用说明](doc/[CXL][Manual]%20User%20Reference%20Manual%20-%20xiterator.md) - [algorithm 算法使用说明](doc/[CXL][Manual]%20User%20Reference%20Manual%20-%20xalgorithm.md) # 安装 * linux ``` make && make install ``` # 修订历史 ``` +---------+------------+-------------------+----------------------------------------------------------+ | Version | Date | Author | Describe | +---------+------------+-------------------+----------------------------------------------------------+ | 0.1.0 | 2026/10/15 | Lamdonn | 1.The original vlib repository has been renamed to cxl. | | | | | 2.Initial version cxl | +---------+------------+-------------------+----------------------------------------------------------+ ``` # 联系方式 Lamdonn@163.com