结构

GLibPtrArray

描述 [src]

struct GPtrArray {
  gpointer* pdata;
  guint len;
}

包含指针数组的公共字段。

结构成员
pdata

指向指针数组,该数组在数组增长时可能会移动。

len

数组中的指针数量。

函数

g_ptr_array_add

向指针数组的末尾添加一个指针。如果需要,数组将自动增大。

g_ptr_array_copy

GPtrArray 进行完全(深度)复制。

自:2.62

g_ptr_array_extend

array 中的所有指针添加到 array_to_extend 的末尾。如果需要,数组将自动增大。array_to_extend 就地修改。

自:2.62

g_ptr_array_extend_and_steal

array 中的所有指针添加到 array_to_extend 的末尾,将每个元素的所有权从 array 传输到 array_to_extend,并就地修改 array_to_extend。然后释放 array

自:2.62

g_ptr_array_find

检查 haystack 中是否存在 needle。如果找到该元素,则返回 TRUE,并在 index_ 中(如果非 NULL)返回元素的索引。否则,返回 FALSE,并且 index_ 未定义。如果 haystack 中多次出现 needle,则返回第一个实例的索引。

自:2.54

g_ptr_array_find_with_equal_func

使用给定的 equal_func 检查 haystack 中是否存在 needle。如果找到该元素,则返回 TRUE,并在 index_ 中(如果非 NULL)返回元素的索引。否则,返回 FALSE,并且 index_ 未定义。如果 haystack 中多次出现 needle,则返回第一个实例的索引。

自:2.54

g_ptr_array_foreach

针对 GPtrArray 的每个元素调用函数。func 不得向数组添加元素或从数组中删除元素。

自:2.4

g_ptr_array_free

释放 GPtrArray 分配的内存。如果 free_segmentTRUE,它还会释放保存这些元素的内存块。如果你想释放 GPtrArray 包装器但保留底层数组以便在其他地方使用,则传递 FALSE。如果 array 的引用计数大于 1,则保留 GPtrArray 包装器,但 array 的大小将被设置为 0。

g_ptr_array_insert

在给定的索引处将一个元素插入指针数组。必要时,数组将自动增长大小。

自 2.40 起

g_ptr_array_is_null_terminated

获取 array 是否被构造为以 NULL 结尾。

自 2.74 起

g_ptr_array_new

创建一个新的 GPtrArray,其引用计数为 1。

g_ptr_array_new_from_array

创建一个新的 GPtrArray,从 data 复制 len 个指针,并将数组的引用计数设置为 1。

自 2.76 起

g_ptr_array_new_from_null_terminated_array

创建一个新的 GPtrArray,在计算其长度后从 data 复制指针,其引用计数为 1。这避免了必须手动逐个添加每个元素。如果提供了 copy_func,则使用它来复制新数组中的数据。它还设置 element_free_func,以便在通过 g_ptr_array_unref() 销毁数组时、当 g_ptr_array_free() 被调用且 free_segment 被设置为 TRUE 时或在移除元素时释放每个元素。

自 2.76 起

g_ptr_array_new_full

创建一个新的 GPtrArray,其引用计数为 1,并预分配 reserved_size 个指针。如果你打算向数组添加许多指针,这将避免频繁重新分配。请注意,数组的大小仍然为 0。它还设置 element_free_func,以便在通过 g_ptr_array_unref() 销毁数组时、当 g_ptr_array_free() 被调用且 free_segment 被设置为 TRUE 时或在移除元素时释放每个元素。

自 2.30 起

g_ptr_array_new_null_terminated

类似于 g_ptr_array_new_full(),但还允许将数组设置为以 NULL 结尾。以 NULL 结尾的指针数组在最后一个元素之后有一个额外的 NULL 指针,超出当前长度。

自 2.74 起

g_ptr_array_new_take

创建一个新的 GPtrArray,其中 data 作为指针、len 作为长度,其引用计数为 1。

自 2.76 起

g_ptr_array_new_take_null_terminated

创建一个新的 GPtrArray,其中 data 作为指针,其长度通过计算得出,其引用计数设置为 1。

自 2.76 起

g_ptr_array_new_with_free_func

创建一个新的 GPtrArray,其引用计数为 1,并且使用 element_free_func 在通过 g_ptr_array_unref() 销毁数组时、当 g_ptr_array_free() 被调用且 free_segment 被设置为 TRUE 时或在移除元素时释放每个元素。

自 2.22 起

g_ptr_array_ref

原子的将 array 的引用计数加一。此函数是线程安全的,可以从任何线程调用。

自 2.22 起

g_ptr_array_remove

从指针数组中移除给定指针的首次出现。将后面的元素向下移动一位。如果 array 有一个非 NULLGDestroyNotify 函数,则为已移除的元素调用它。

g_ptr_array_remove_fast

从指针数组中移除给定指针的第一次出现。数组中的最后一个元素用于填充该空间,因此该函数不会保留数组的顺序。但它比 g_ptr_array_remove() 更快。如果 array 拥有一个非 NULL 的 GDestroyNotify 函数,则对已移除元素调用该函数。

g_ptr_array_remove_index

从指针数组中移除位于给定索引处的指针。将后面的元素向下移动一位。如果 array 拥有一个非 NULL 的 GDestroyNotify 函数,则对已移除元素调用该函数。如果是这样,则此函数的返回值可能会指向已释放内存(取决于 GDestroyNotify 实现)。

g_ptr_array_remove_index_fast

从指针数组中移除位于给定索引处的指针。数组中的最后一个元素用于填充该空间,因此该函数不会保留数组的顺序。但它比 g_ptr_array_remove_index() 更快。如果 array 拥有一个非 NULL 的 GDestroyNotify 函数,则对已移除元素调用该函数。如果是这样,则此函数的返回值可能会指向已释放内存(取决于 GDestroyNotify 实现)。

g_ptr_array_remove_range

从 GPtrArray 中移除从给定索引开始的给定数量的指针。将后面的元素移动过来以填补该空白。如果 array 拥有一个非 NULL 的 GDestroyNotify 函数,则对已移除元素调用该函数。

自:2.4

g_ptr_array_set_free_func

为 array 被销毁时为每个元素释放一个函数,或者在通过 g_ptr_array_unref() 调用 g_ptr_array_free(),并通过將 free_segment 设置为 TRUE 时或在移除元素时。

自 2.22 起

g_ptr_array_set_size

设置阵列的大小。当将阵列变大时,新添加的元素将被设置为 NULL。当使其变小时,如果 array 拥有一个非 NULL 的 GDestroyNotify 函数,则对其已移除元素调用该函数。

g_ptr_array_sized_new

创建新的 GPtrArray,其中有已预先分配且引用计数为 1 的 reserved_size 个指针。如果您打算向阵列中添加许多个指针,此做法可避免频繁重新分配。但请注意阵列的大小仍然为 0。

g_ptr_array_sort

对数组排序,使用 compare_func,它应当是 qsort() 风格的比较函数(返回小于零表示第一个自变量小于第二个自变量,等于零表示相等,大于零表示第一个自变量大于第二个自变量)。

g_ptr_array_sort_values

对数组排序,使用 compare_func,它应当是 qsort() 风格的比较函数(返回小于零表示第一个自变量小于第二个自变量,等于零表示相等,大于零表示第一个自变量大于第二个自变量)。

自 2.76 起

g_ptr_array_sort_values_with_data

类似于 g_ptr_array_sort_values(),但是比较函数具有一个额外的用户数据自变量。

自 2.76 起

g_ptr_array_sort_with_data

类似于 g_ptr_array_sort(),但是比较函数具有一个额外的用户数据自变量。

g_ptr_array_steal

释放数组中的数据并将大小重置为零,而底层数组保留供以后使用并返回给调用者。

since: 2.64

g_ptr_array_steal_index

从指针数组中移除位于给定索引处的指针。将后面的元素向下移动一位。不对 array 的 GDestroyNotify 对已移除元素进行调用;所有权转让给此函数的调用者。

since: 2.58

g_ptr_array_steal_index_fast

从指针数组中移除位于给定索引处的指针。数组中的最后一个元素用于填充该空间,因此该函数不会保留数组的顺序。但它比 g_ptr_array_steal_index() 更快。不对 array 的 GDestroyNotify 对已移除元素进行调用;所有权转让给此函数的调用者。

since: 2.58

g_ptr_array_unref

原子递减array的一个引用计数值。如果引用计数值降至 0,则效果与调用 g_ptr_array_free()free_segment 设为 TRUE 相同。此函数是线程安全的,可以从任意线程调用。

自 2.22 起