2010-03-23 9 views
12

저는 C 언어 학습에 전념했습니다. 저는 Python/PHP/Bash에 능숙하지만 C 언어에 익숙하지 않아 제한적이라고 결정했습니다. 그러나리스트 나 해시가없는 언어로 작업하는 것을 상상할 수는 없습니다. 나는 총을 쏘고 있지만 확실하게 '표준'컬렉션 라이브러리가 있습니다. 그래도 GNU 표준 lib에 어떤 제안이 보이지 않습니까?C 언어 표준 컬렉션 Where are they?

+0

"제한적"이외의 다른 이유가 없으면 대신 C++ 학습을 시작하는 것이 좋습니다. C++에는 해시 테이블을 제외하고 원하는 벡터,리스트가 있습니다. C++ 0x로 추가되고 현대 컴파일러에서 이미 사용할 수 있습니다. – Thomas

+0

VHL 언어 사용자가 C++, bash/PHP/Python을 주요 대상으로하지 않기 때문에 소비하는 인프라의 상당 부분을 C에 대해 더 많이 알 필요가 있습니다. – flaxeater

답변

14

C에 대한 "표준"컬렉션 클래스가 없습니다. 단순히 많은 사람들이 필요에 따라 자신을 굴려 라.

물론이 격차를 메우는 라이브러리가 있습니다. 예를 들어, glib은 링크 된 목록, 해시 테이블 및 다양한 종류의 트리를 제공합니다.

+0

네, 이것이 제가 정말로 묻고있는 것입니다. 나는 '표준'이 없다는 것을 알았지 만 사람들이 주로 사용하는 툴킷이 있음을 알고 있습니다. 아마 그럴거야. :) 감사 – flaxeater

11

C는 이전보다 낮은 수준입니다. 배열 외부의 C에는 표준 콜렉션이 없습니다. C.는 매우 낮은 수준의 언어이기 때문에 정말 표준 컬렉션이 없습니다

+0

예, OP는 함수 오버로딩이 없으며 함수 중간에 변수를 선언 할 수 없다는 것에 놀랄 것입니다. – Pyrolistical

+2

@Pyrolistical C99는 함수의 중간에서 변수 선언을 허용합니다. – amrox

+0

나는 분명하지 않았으며 그 점에 대해 나쁘다. 나는 '표준'에 대해 따옴표를 붙이는 것이 내가 커뮤니티 표준을 요구하고 있음을 분명히했다. – flaxeater

0

C++가 Standard Template Library를 통해 이러한 추가 (++보다 "현대"언어 C에 비해). 해시 및 목록과 같은 대부분의 "컬렉션"은 객체 지향 또는 일반 프로그래밍 기술을 기반으로합니다 (규약을 통하지 않고). C.

4

아마도 glib을 살펴보아야 할 것입니다. C++의 STL과 동일한 의미의 표준은 아니지만 입증 된 라이브러리이므로 많은 응용 프로그램에서 사용됩니다.

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

0

는 적어도 C99의로, 어떤 "표준"(ISO C 표준의 일부처럼) 컨테이너 라이브러리가 없습니다. 제 3 자 시도를 여러 번 보았습니다. 모두가 어느 정도의 손실을 입었습니다.

C에는 매우 원시적이고 빈약 한 툴킷이 있습니다. 나는 C 프로그래밍을 톱니톱과 발톱 망치로 집을 짓는 것과 비교했다.

2

표준은 없지만 : Dave Hanson의 C Interfaces and Implementations보다 훨씬 간단한 이라는 훌륭한 대안이 있습니다. 여기에는 몇 가지 효율적인 콜렉션 추상화 및 기타 유용한 모듈이 포함됩니다. 이 소프트웨어는 무료이며이 책은 가치가 있습니다.

0

시스템에 따라 "단일 연결 목록, 이중 연결 목록, 단순 대기열 및 테일 대기열 구현"을 포함하는 sys/queue.h에서 찾고있는 것을 찾을 수 있습니다.