GCC-4.3.2中提供的标准算法

时间:2012-09-24 04:46:50

标签: c algorithm gcc

我正在开发一个涉及使用多种标准算法的项目,如快速排序,合并排序,二进制搜索。在使用之前实现所有这些将非常繁琐且耗时。

那么,任何人都可以向我提供GCC-4.3.2中已有的标准算法列表,以便我可以直接在我的项目中使用它们。

如果我不清楚我是否怀疑,请发表评论。

谢谢!

1 个答案:

答案 0 :(得分:2)

目前还不清楚你问题的最佳答案是什么。它可能取决于您正在使用的操作系统。

C标准库提供了许多实现各种算法和/或提供(有限的)操作系统功能的功能。特别是,标准qsort()函数对数组进行排序,bsearch()函数搜索数组。在这两种情况下,C标准都规定了它们的作用;它没有说明他们是如何做到的。提供执行冒号排序的qsort()和执行线性搜索的bsearch()实现甚至是合法的 - 尽管我确信没有实现实际上会做一些愚蠢的事情。

C标准库的权威参考是ISO C标准。在1990年,1999年和2011年发布了该标准的几个连续版本。1999年标准的良好草案是N1256; C11标准的良好草案是N1570。如果你正在使用gcc,你的实现可能实现几乎所有的C99(你可以使用gcc -std=c99); C11一致性正在进行中。

大多数实现提供C标准不需要的其他库函数。例如,POSIX指定了大量附加功能。

您使用gcc 4.3.2的事实并没有真正告诉我们运行时库中可用的内容。 C实现由编译器和运行时库组成。 gcc只是编译器;根据操作系统,它可以与许多不同的运行时库一起使用。对于Linux(或GNU / Linux,如果您愿意)系统,运行时库通常(总是?)GNU libc(感谢Jim Balter提供的链接)。其他系统可能会使用其他一些运行时库;你必须找出你的系统使用的库并查找其文档。

请注意,C库不提供很多通用算法,部分原因是很难在纯C中干净地表达这些算法。例如,如果你看qsort()和{{1}你将看到他们使用bsearch()指针并处理内存块而不是类型化对象。您可以考虑查看C ++,其标准库提供了大量的数据类型和算法;它们更加类型安全,因为它们使用C ++的模板功能。