標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4 |
両方 |
#define _XOPEN_SOURCE
#include <search.h>
ENTRY *hsearch(ENTRY item, ACTION action);
hsearch() 関数はハッシュ・テーブル検索ルーチンです。エントリーが見つかった場所を示すポインターをハッシュ・テーブルに戻します。item 引数は、ENTRY 型の構造体であり (<search.h> ヘッダーで定義される)、2 つのポインター item.key (比較キー (char *) を指す) と item.data (void *、そのキーに関連するその他のデータを指す) が設定されています。hsearch() で使用される比較関数は、strcmp()です。action 引数は、列挙型 ACTION のメンバーで、テーブル内に見つからなかった場合 のエントリーの後処理を示します。ENTER は、項目を適切な場所でテーブル内に挿入することを 指定します。FIND は、エントリーを作らないことを指定します。
スレッド化の動作: hcreate() 関数は、ストレージの一部をハッシュ・テーブルとして使用するため割り振ります。このストレージは、ユーザーには公開されませんが、すべてのスレッドから参照されます。言い換えると、これらの関数は、プロセス内でグローバルな 1 つのハッシュ・テ ーブルで操作します。ライブラリーは、テーブルへのアクセスをシリアライズし、付随するデータは、内部 mutex を使用してスレッド間をまたがります。
アクションが FIND であり、かつ項目が検出されなかった場合、またはアクションが ENTER であり、かつテーブルがフルの場合は、hsearch() は NULL ポインターを戻します。