2010-03-23 10 views
12

Zobowiązałem się do nauki C teraz, jestem dobry z Python/PHP/Bash, ale zdecydowałem, że jestem ograniczony przez brak płynności w C. Jednak nie wyobrażam sobie pracy w języku bez list i skrótów, może Po prostu przeskakuję z pistoletu, ale z pewnością istnieją "standardowe" biblioteki kolekcji. Nie widzę żadnych w standardowej wersji GNU, żadnych sugestii?C Standardowe kolekcje językowe Gdzie są?

+0

Jeśli nie masz innego powodu niż "bycie ograniczonym", sugeruję rozpoczęcie nauki C++. C++ ma wektory, listy, prawie wszystko, czego potrzebujesz, oprócz hashtables, które zostaną dodane w C++ 0x i są już dostępne w nowoczesnych kompilatorach. – Thomas

+0

Naprawdę czuję potrzebę lepszego poznania C jak największej ilości infrastruktury, którą ja konsumuję, jako użytkownika języka VHL, a nie w C++, bash/PHP/Python. – flaxeater

Odpowiedz

14

Nie ma "standardowego" zestawu klas kolekcji dla C. Wiele osób po prostu w razie potrzeby przetasuj własne.

Ale oczywiście niektóre biblioteki wypełniają tę lukę. Na przykład glib oferuje powiązane listy, hashtables i różne rodzaje drzew.

+0

tak, naprawdę to o to pytałem. Zobaczyłem, że nie ma "standardu", ale wiem, że istnieje zestaw narzędzi, z którego korzystają głównie ludzie. To prawdopodobnie to. :) Dzięki – flaxeater

11

C ma niższy poziom niż jesteś przyzwyczajony. Nie ma żadnych standardowych kolekcji w C poza tablicą.

+0

Ya, OP będzie zaskoczony, nie ma przeciążenia funkcji i nie można zadeklarować zmiennych w środku funkcji – Pyrolistical

+2

@Pyrolistical C99 pozwala na deklaracje zmiennych w środku funkcji – amrox

+0

Nie było jasne i czuję Źle o tym, pomyślałem, że umieszczenie cytatów na temat "standardu" jasno pokazało, że prosiłem o standard wspólnotowy. – flaxeater

0

Tam naprawdę nie są standardowe kolekcje w C. Jest to język bardzo niskim poziomie (w porównaniu do C++ i bardziej „nowoczesne” języki)

C++ dodaje je poprzez Standard Template Library. Większość "zbiorów", takich jak hashowanie i listy, bazuje na obiektowych lub ogólnych technikach programowania niedostępnych (poza konwencją) w C.

4

Może powinieneś spróbować spojrzeć na glib. Chociaż nie jest standardem w tym samym sensie, co STL dla C++, jest sprawdzoną biblioteką i jest używany w wielu aplikacjach.

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

0

nie są „standardowe” (jak w części normy ISO C) biblioteki pojemnik, przynajmniej od C99. Widziałem kilka prób stron trzecich; wszyscy mieli pewien stopień ubytku lub inny.

C ma bardzo prymitywny i skromny zestaw narzędzi; Porównywałem programowanie w C do budowania domu tylko z piłą ręczną i młotem do pazurów.

2

Nie ma standardu, ale istnieje doskonała alternatywa, która jest znacznie łatwiejsza niż niż glib: Dave Hanson's C Interfaces and Implementations. Zawiera kilka efektywnych kolekcji pobrań i wiele innych przydatnych modułów. Oprogramowanie jest bezpłatne, a książka jest warta zakupu.

0

W zależności od systemu możesz znaleźć to, czego szukasz w wersji sys/queue.h, która obejmuje "implementacje pojedynczo połączonych list, podwójnie powiązanych list, prostych kolejek i kolejek".