C语言标准集合在哪里?

我现在已经致力于学习C语言,我很擅长使用Python / PHP / Bash,但我已经决定我不能流利使用C.但是我无法想象用没有列表和哈希的语言工作,也许我我只是跳枪,但肯定有’标准’收集库。 我在GNU标准库中看不出任何建议吗?

C没有“标准”的集合类集合。许多人只需根据需要自行编写。

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

C比您习惯的水平低。 数组外的C中没有标准集合。

也许你应该尝试看看油嘴。 虽然它不是与STL for C ++相同的标准,但它是一个经过validation的库,可用于许多应用程序。

http://library.gnome.org/devel/glib/2.22/

没有标准,但有一个极好的选择比glib简单得多 :Dave Hanson的C接口和实现 。 它包括几个有效的集合抽象和许多其他有用的模块。 该软件是免费的,这本书值得购买。

在C中没有真正的标准集合。作为一种非常低级的语言(与C ++和更“现代”的语言相比)

C ++通过标准模板库添加这些。 大多数“集合”(例如散列和列表)都基于C中面向对象或通用编程技术(除了通过约定)。

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

C有一个非常原始和微薄的工具包; 我把C语言中的编程与用手锯和羊角锤建造房子进行了比较。

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

cdcontainers接口类似于C ++ STL https://github.com/maksimandrianov/cdcontainers

#define CDC_USE_SHORT_NAMES // for short names (functions and structs without prefix cdc_*) #include  #include  #include  int main(int argc, char** argv) { vector_t *v; size_t i; if (vector_ctor(&v, NULL) != CDC_STATUS_OK) /* error handling */; if (vector_push_back(v, CDC_INT_TO_PTR(7)) != CDC_STATUS_OK) /* error handling */; if (vector_push_back(v, CDC_INT_TO_PTR(8)) != CDC_STATUS_OK) /* error handling */; for (i = 0; i < vector_size(v); ++i) printf("%i ", CDC_PTR_TO_INT(vector_get(v, i))); printf("\n"); vector_dtor(v); return 0; }