2010-03-23 60 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中找到您要查找的內容,其中包括「單鏈表,雙鏈表,簡單隊列和尾部隊列」的實現。