標準のCライブラリの実装、特にglibc(GNU C Library)はリンクリスト、スタックなどのデータ構造を提供しますか、それとも独自のロールを作成する必要がありますか?
ありがとう。
C標準は、リンクリストやスタックなどのデータ構造を提供しません。一部のコンパイラ実装は独自のバージョンを提供する場合がありますが、その使用法は異なるコンパイラ間で移植できません。
はい、あなたは自分で書く必要があります。
C標準ではサポートされていませんが、glibcは、POSIXではなくBSDから来た queue manページに従って、<sys/queue.h>
でリスト、テールキュー、および循環キューを提供します。
Glibcにはハッシュテーブル、バイナリツリー、バイナリ検索などがあります。これらは、C89、C99および/またはPOSIX.1標準の一部です。何らかの理由でリンクリストがありません。
Manページの詳細情報: hsearch 、 tsearch 、および bsearch
注:それらのいくつかはデザインが悪いです。例:hsearch
は、プロセスごとに1つのハッシュテーブルのみを許可します。 GNUコンパイラ、gcc/glibcは、リエントラントバージョンを提供します hcreate_r
、hsearch_r
、およびhdestroy_r
複数のハッシュテーブルを許可します。スタックオーバーフローも参照してください 使用方法hcreate_r
。
POSIX(およびGLibc)にはハッシュテーブルの実装があります。 hcreate/hdestroy/hsearchのマンページを参照してください。
ただし、前述したように、glibを使用することが、基本的なデータ構造を再実装する手間を省く最も簡単な方法です。