hsearch() - ハッシュ・テーブルの検索

標準

標準/拡張機能 C/C++ 依存項目

XPG4
XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

#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 ポインターを戻します。

エラーが発生した場合、hsearch() は errno を次のいずれかの値に設定します。
エラー・コード
説明
ENOMEM
使用可能なストレージ・スペースが不十分です。

関連情報