因为我也曾经有过类似的需求
而写了一套一系列的 linked list 容器
https://github.com/kevin-dong-nai-jia/OpenGC3
更加注重在 性能的优化和代码的简洁性
目前以 MIT License 发布
我的实作与 Linux list_head 的差别如下:
1. 当前置定义 #define CC_STRICT
可以“完全遵守”使用 C99+ 标准规范
不使用任何 GCC C编译器的扩展语法
但是 Linux 的实作不能
2. 提供多种 list 的资料结构
包含 doubly/singly/exclusive-or list
但是 Linux 的实作只有第一种
3. 使用 non-intrusive 容器的设计
宣告和操作 list 变得非常地容易
只需要使用 ccdll(int) list;
这与 Linux 使用方式的有巨大的改进
4. 最重要的是
它优异的的设计使得它的效能可以
在处理极大量资料时大大提升
https://i.imgur.com/ehK1uDZ.png
5. 另一个最重要的是
它的多种测资已经通过 valgrind 的检查
不会造成内存外泄和非初始化资料存取
而且拥有详细的 documentations
描述每个操作的使用方法和宏依赖关系
这是 OpenGC3 专案被托管的地方
https://github.com/kevin-dong-nai-jia/OpenGC3
这是一个简易的范例
介绍如何使用 ccdll 对档案基于行的排序
./sort-by-lines <path-to-file> <strncmp-3rd-arg>
https://gist.github.com/kevin-dong-nai-jia/834e3d16c3c7f0f8496ef23945dbf7ca
希望你会喜欢 >皿<
喜欢并对你有帮助的话请帮我在上方点击一颗星星!
这会是我最棒的过年礼物(灿笑
※ 引述《takesi5200 (小咪)》之铭言:
: 问题(Question):
: 不好意思,.NET有List<T>集合,
: 可以很方便把资料放入集合里。
: 小妹因公司需求要在Linux平台上
: 也开发类似此方法。
: 请问Linux C有没有类似方法呢?
: 恳请个位高手指导,谢谢
作者:
galic (嘎利)
2018-02-12 13:55:00总统先生的容器
作者:
damody (天亮damody)
2018-02-12 14:28:00好猛
作者:
la8day (la8day)
2018-02-12 14:35:00厉害了这
作者: ggBird (ggBird) 2018-02-12 14:48:00
伟大的祖国统领
作者:
Sirctal (母猪母猪 夜里哭哭)
2018-02-12 16:02:00你是不是在WWE的摔角擂台上写出来的??
作者:
Neisseria (Neisseria)
2018-02-12 16:03:00总统级的 container,已跪
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2018-02-12 16:07:00可是瑞凡, C# 通常是用 array list 不是 linked list
作者:
dzwei (Cout<< *p << \n ;)
2018-02-12 16:19:00跪了
作者: dannypsnl (秦书) 2018-02-12 16:49:00
点进去才发现按过了XEXD
没想到在C#简单的List拿到C/C++竟然这么复杂
作者:
LPH66 (-6.2598534e+18f)
2018-02-12 20:57:00不, 只有 C 而已, C++ 的 STL 有 std::list<T>
作者:
Ommm5566 (56天團)
2018-02-12 21:27:00c++还有boost MPL库的list工具
作者:
y3k (激流を制するは静水)
2018-02-12 22:00:00已给星
楼主: DonaldTrunnp (The US President) 2018-02-12 22:36:00
谢谢 >皿<
作者:
descent (“雄辩是银,沉默是金”)
2018-02-12 23:26:00不知道为什么, c 标准不加入这些资料结构
作者:
hunandy14 (Charlott.HonG)
2018-02-13 01:49:00各种黑魔法 已跪
作者: andrew000129 2018-02-15 15:15:00
推
作者:
Neisseria (Neisseria)
2018-02-15 17:57:00补给星了,拜读 macro 语法中 >_<