结构
GLibPtrArray
描述 [src]
struct GPtrArray {
gpointer* pdata;
guint len;
}
包含指针数组的公共字段。
结构成员
pdata
指向指针数组,该数组在数组增长时可能会移动。
len
数组中的指针数量。
函数
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_free
释放 GPtrArray
分配的内存。如果 free_segment
为 TRUE
,它还会释放保存这些元素的内存块。如果你想释放 GPtrArray
包装器但保留底层数组以便在其他地方使用,则传递 FALSE
。如果 array
的引用计数大于 1,则保留 GPtrArray
包装器,但 array
的大小将被设置为 0。
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_with_free_func
创建一个新的 GPtrArray
,其引用计数为 1,并且使用 element_free_func
在通过 g_ptr_array_unref() 销毁数组时、当 g_ptr_array_free()
被调用且 free_segment
被设置为 TRUE
时或在移除元素时释放每个元素。
自 2.22 起
g_ptr_array_remove
从指针数组中移除给定指针的首次出现。将后面的元素向下移动一位。如果 array
有一个非 NULL
的 GDestroyNotify
函数,则为已移除的元素调用它。
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_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 起