结构

GLibHashTable

描述 [src]

struct GHashTable {
  /* No available fields */
}

GHashTable 结构是一个不透明数据结构,用于表示 [散列表][glib-散列表]。仅可通过以下函数访问。

函数

g_hash_table_add

这是一个方便函数,用于将 `GHashTable` 用作集合。它等效于使用 `key` 作为键和值的 `g_hash_table_replace()` 调用。

自:2.32

g_hash_table_contains

检查 `hash_table` 中是否有 `key`。

自:2.32

g_hash_table_destroy

销毁 GHashTable 中的所有键和值,并将其引用计数减 1。如果动态分配了键和/或值,则应该先释放它们或使用 `g_hash_table_new_full()` 创建带有销毁通知程序的 GHashTable。在后者的案例中,销毁期间会对所有键和值调用你提供的销毁函数。

g_hash_table_find

按顺序调用 GHashTable 中键值对的给定函数,直至 `predicate` 返回 TRUE。该函数传递给每个对的键和值以及给定的 `user_data` 参数。迭代时不得修改哈希表 (你不能添加/移除项)。

自:2.4

g_hash_table_foreach

按顺序调用 GHashTable 中每个键值对的给定函数。该函数传递给每个对的键和值以及给定的 `user_data` 参数。迭代时不得修改哈希表 (你不能添加/移除项)。要移除所有与谓词匹配的项,请使用 `g_hash_table_foreach_remove`。

g_hash_table_foreach_remove

针对GHashTable中的每对键/值调用给定函数。如果该函数返回TRUE,那么该键/值对将从GHashTable中移除。如果你在创建GHashTable时提供了键或值销毁函数,它们用于释放为已移除的键和值分配的内存。

g_hash_table_foreach_steal

针对GHashTable中的每对键/值调用给定函数。如果该函数返回TRUE,那么该键/值对将从GHashTable中移除,但不会调用键或值销毁函数。

g_hash_table_get_keys

获取hash_table中的每一个键。在对哈希所做的修改释放这些键之前,返回的数据仍然有效。

自版本: 2.14 起

g_hash_table_get_keys_as_array

获取hash_table中的每一个键,作为数组。

自版本: 2.40 起

g_hash_table_get_keys_as_ptr_array

获取hash_table中的每一个键,作为GPtrArray。在对哈希所做的修改释放这些键之前,返回的数据仍然有效。

自版本: 2.76 起

g_hash_table_get_values

获取hash_table中的每一个值。在hash_table被修改之前,返回的数据仍然有效。

自版本: 2.14 起

g_hash_table_get_values_as_ptr_array

获取hash_table中的每一个值,作为GPtrArray。在对哈希所做的修改释放这些值之前,返回的数据仍然有效。

自版本: 2.76 起

g_hash_table_insert

GHashTable中插入一个新键和值。

g_hash_table_lookup

GHashTable中查找一个键。请注意,此函数无法区分不存在的键和存在且值为NULL的键。如果你需要此区分,请使用g_hash_table_lookup_extended()。

g_hash_table_lookup_extended

GHashTable中查找一个键,返回原始键和关联的值以及一个布尔值,如果找到该键,该值为TRUE。如果你需要释放为原始键分配的内存,这一点非常有用,例如在调用g_hash_table_remove()之前。

g_hash_table_new

创建具有引用计数 1 的一个新GHashTable

g_hash_table_new_full

如同g_hash_table_new(),创建具有引用计数 1 的一个新GHashTable,并允许指定函数来释放从GHashTable中移除条目时分配给键和值的内存。

g_hash_table_new_similar

如同g_hash_table_new_full(),创建具有引用计数 1 的一个新GHashTable

自版本: 2.72 起

g_hash_table_ref

hash_table的引用计数原子地递增。这个函数是 MT-安全的,可以从任何线程调用。

自版本: 2.10 起

g_hash_table_remove

GHashTable中移除一个键及其关联的值。

g_hash_table_remove_all

GHashTable中移除所有键及其关联的值。

自版本: 2.12 起

g_hash_table_replace

如同 g_hash_table_insert(),在GHashTable中插入一个新键和值。不同之处在于,如果该键已存在于GHashTable中,它将被新键替换。如果你在创建GHashTable时提供了value_destroy_func,旧值将使用该函数释放。如果你在创建GHashTable时提供了key_destroy_func,旧键将使用该函数释放。

g_hash_table_size

返回GHashTable中包含的元素数量。

g_hash_table_steal

GHashTable中移除一个键及其关联的值,而不会调用键和值销毁函数。

g_hash_table_steal_all

GHashTable中移除所有键及其关联的值,而不会调用键和值销毁函数。

自版本: 2.12 起

g_hash_table_steal_all_keys

从 `GHashTable` 中移除所有键及其关联的值,而不调用键的销毁函数,以 `GPtrArray` 的形式返回键,并将其 free func 设置为 `hash_table` 的键销毁 函数。

自版本: 2.76 起

g_hash_table_steal_all_values

从 `GHashTable` 中移除所有键及其关联的值,而不调用值的销毁函数,以 `GPtrArray` 的形式返回值,并将其 free func 设置为 `hash_table` 的值销毁 函数。

自版本: 2.76 起

g_hash_table_steal_extended

在 `GHashTable` 中查找一个键,盗取原始键和关联的值,如果找到该键,则返回 `TRUE`。如果未找到该键,则返回 `FALSE`。

自版本 2.58 起

g_hash_table_unref

原子性地将 `hash_table` 的引用计数减少 1。如果引用计数降至 0,则所有键和值将被销毁,并且哈希表分配的所有内存都将被释放。此函数是 MT- 安全函数,可以从任何 线程调用。

自版本: 2.10 起