### Function

# GLib HashTable find

since: 2.4

#### Declaration

    gpointer
    g_hash_table_find (
      GHashTable* hash_table,
      GHRFunc predicate,
      gpointer user_data
    )

#### Description

Calls the given function for key/value pairs in the `GHashTable` until `predicate` returns `TRUE`. The function is passed the key and value of each pair, and the given `user_data` parameter. The hash table may not be modified while iterating over it (you can’t add/remove items).

Note, that hash tables are really only optimized for forward lookups, i.e. g_hash_table_lookup(). So code that frequently issues `g_hash_table_find()` or `g_hash_table_foreach()` (e.g. in the order of once per every entry in a hash table) should probably be reworked to use additional or different data structures for reverse lookups (keep in mind that an O(n) find/foreach operation issued for all n values in a hash table ends up needing O(n*n) operations).

Available since: 2.4

#### Parameters

`hash_table`

  Type: `GHashTable`

  A `GHashTable`.

  The data is owned by the caller of the function.

`predicate`

  Type: `GHRFunc`

  Function to test the key/value pairs for a certain property.

`user_data`

  Type: `gpointer`

  User data to pass to the function.

  The argument can be `NULL`.
  The data is owned by the caller of the function.

#### Return value

Type: `gpointer`

The value of the first key/value pair is returned, for which `predicate` evaluates to `TRUE`. If no pair with the requested property is found, `NULL` is returned.

The data is owned by the called function.
The return value can be `NULL`.