Cコンテナライブラリを知っている人はいますか? C++ STL とほぼ同じ方法で、リンクされたリスト、配列、ハッシュ テーブルなどの標準的な実装を提供するものを探しています。主な懸念事項は次のとおりです。
- クライアント コードは、ライブラリを変更することなく、複数の異なるデータ型のコンテナーを作成できる必要があります。
- コンテナーを作成して使用するためのインターフェースは直感的でなければなりません。
Cコンテナライブラリを知っている人はいますか? C++ STL とほぼ同じ方法で、リンクされたリスト、配列、ハッシュ テーブルなどの標準的な実装を提供するものを探しています。主な懸念事項は次のとおりです。
マップ/辞書コンテナーの C 実装を探しているときに、SGLIB に出会いました。残念ながら、地図はありませんが、あなたが尋ねたコンテナが含まれているようです. 私はそれがどれほど良いかわかりません。
Sglibは優れた汎用データ構造ライブラリです。ライブラリは現在、次の一般的な実装を提供しています。
とても速いです。そのグリブを高速化します。これは、標準テンプレート ライブラリに触発されています。ここからダウンロード
もう 1 つのソリューションはAttractive Chaos ソフトウェアです。C マクロ ライブラリ:
kbtree.h: C の効率的な B ツリー ライブラリ。
khash.h: C の高速で軽量なハッシュ テーブル ライブラリ。
kvec.h: C の単純なベクトル コンテナー。
Kulesh Shanmugasundaramは、一般的な Linux カーネル リンク リストと、Linux カーネル リンク リストに基づく一般的なハッシュ テーブルを提示します。
Sglib および Attractive Chaos ソフトウェアと Linux Kernel Linked List は、C マクロ ライブラリです。を使用void*
して C でジェネリック コンテナーを実装すると、非効率になる場合があります。C マクロは C++ テンプレートを模倣し、C++ テンプレートと同じくらい効率的です。
Chuck Falconerは、C++ インターフェイスを含む C で書かれたまともなハッシュ ライブラリを持っています。ダウンロードするには、Web ページの hashlib.zip をクリックしてください。
Ben Pfaffは、バイナリ検索ツリー、AVL ツリー、赤黒ツリー、およびそれぞれのスレッド化されたバージョンを含むほとんどの主要なツリー構造を実装する、非常に優れた、非常によく文書化されたバイナリおよびバランスのとれたツリー ライブラリGNU libavlを持っています。
libavl は LGPL (バージョン 2.0.3 以降) の下でライセンスされており、hashlib は GPL です。
前者は言語によって直接サポートされており、後者は一般にライブラリを保証することなく実装するのに十分簡単であるため、配列とリンクリストに関する限り、あなたが何を探しているのかわかりません。
cclはどうですか?これは C 用のコンテナー ライブラリです。https://code.google.com/p/ccl/が表示されます。楽しめ。
私は、Hanson の「C Interface and Implementations」の本から拡張してきたライブラリを使用してきました。彼のソースは次の場所でダウンロードできます。
すべてが抽象データ型です。リスト、セット、テーブル(マップ)があります。
#include "queue.h"
単一リンクリスト、単一リンクテールキュー、リスト、およびテールキューの実装にアクセスするため。
DJ Bernstein(http://cr.yp.to/djbdns.html)がメモリに任意のオブジェクトを格納するための汎用キャッシュは、クリーンでシンプルかつ超高速であることがわかりました。djdnstarballでcache.hとcache.cを検索します。
私が聞いたことがある(しかし使用したことのない)もののいくつかは