2010-03-23 32 views
12

我已经致力于学习C,我很擅长Python/PHP/Bash,但是我决定我受限于C中不流利。但是我无法想象在没有列表和哈希的语言中工作,也许我只是在跳枪,但肯定有'标准'收集库。我在GNU标准库中看不到任何内容,有什么建议吗?C语言标准集合它们在哪里?

+0

如果你没有其他理由而不是“被限制”,我建议你开始学习C++。 C++具有向量,列表,除了散列表外,几乎所有你想要的东西,它将以C++ 0x添加,并且已经在现代编译器中可用。 – Thomas 2010-03-23 18:52:00

+0

我真的觉得需要更多地熟悉C语言,因为我使用VHL语言用户的基础设施很多,而不是以C++,bash/PHP/Python为主。 – flaxeater 2010-03-23 20:28:03

回答

14

C没有“标准”集合类集。许多人只是简单地根据需要滚动自己。

但是,当然,有一些图书馆填补了这个空白。例如,glib提供链表,哈希表和各种树。

+0

是的,这真的是我问的。我看到没有“标准”,但我知道有一个工具箱,那里的人主要使用。这可能是。 :) 谢谢 – flaxeater 2010-03-23 20:25:40

11

C比您以前的水平低。 C外部没有标准集合。

+0

雅,OP会惊讶,甚至没有函数重载,你不能在函数中间声明变量 – Pyrolistical 2010-03-23 18:50:38

+2

@Pyrolistical C99允许函数中间的变量声明 – amrox 2010-03-23 19:00:25

+0

我不清楚,我觉得对于这个问题,我认为把“标准”的引用清楚地表明我要求制定一个社区标准。 – flaxeater 2010-03-23 20:26:39

0

有没有C.是一个非常低级的语言真是标准的集合(相对于C++和更“现代”的语言)

C++通过Standard Template Library添加这些。大多数“集合”(如哈希和列表)都基于面向对象或通用编程技术(不同于通过约定)在C.

0

有没有“标准”(如在ISO C标准的一部分)容器库,至少不是作为C99的。我见过几个第三方尝试;都有一定程度的损失或其他。

C有一个非常原始和微薄的工具包;我把C编程比作建筑,只有一把手锯和一把羊角锤。

2

没有标准,但有一个很好的替代品是远比glib简单:戴夫汉森的C Interfaces and Implementations。它包括几个有效的收集抽象和一些其他有用的模块。该软件是免费的,该书值得购买。

0

根据您的系统,您可能会在sys/queue.h中找到您要查找的内容,其中包括“单链表,双链表,简单队列和尾部队列”的实现。