结构体

GLibTree

说明 [src]

struct GTree {
  /* No available fields */
}

GTree结构体是一个表示[平衡二叉树][glib-Balanced-Binary-Trees]的不可见数据结构。它只能通过以下函数访问。

构造函数

g_tree_new

创建一个新的GTree

g_tree_new_full

创建一个新的与g_tree_new()相似的GTree,并允许指定在从GTree中删除条目时调用以释放为键和值分配的内存的函数。

g_tree_new_with_data

创建一个带有接受用户数据的比较函数的新GTree。有关更多详细信息,请参阅g_tree_new()

实例方法

g_tree_destroy

GTree中删除所有键和值,并将其引用计数减少一个。如果键和/或值是动态分配的,您应该首先手动释放它们,或者使用g_tree_new_full()创建GTree。在后一种情况下,在销毁GTree之前,您提供的销毁函数将在所有键和值上调用。

g_tree_foreach

GTree中的每个键/值对调用指定的函数。函数传递每个对的键和值以及给定的data参数。树按排序顺序遍历。

g_tree_foreach_node

GTree中的每个节点调用指定的函数。函数传递特定节点的指针以及给定的data参数。树遍历按顺序进行。

since: 2.68

g_tree_height

获取GTree的高度。

g_tree_insert

将键/值对插入到GTree中。

g_tree_insert_node

将键/值对插入到GTree中。

since: 2.68

g_tree_lookup

获取对应给定键的值。由于在添加键/值对时 GTree 会自动平衡,因此键查找的时间复杂度为 O(log n)(其中 n 是树中键/值对的数量)。

g_tree_lookup_extended

GTree 中查找键,返回原始键和相关值。如果在调用 g_tree_remove() 之前需要释放原始键分配的内存,这很有用。

g_tree_lookup_node

获取对应给定键的树节点。由于在添加键/值对时 GTree 会自动平衡,因此键查找的时间复杂度为 O(log n)(其中 n 是树中键/值对的数量)。

since: 2.68

g_tree_lower_bound

获取对应给定键的下界节点,如果树为空或所有树节点键严格低于搜索键,则返回 NULL

since: 2.68

g_tree_nnodes

获取 GTree 中的节点数。

g_tree_node_first

返回树的第一个有序节点,或者对于空树返回 NULL

since: 2.68

g_tree_node_last

返回树的最后一个有序节点,或者对于空树返回 NULL

since: 2.68

g_tree_ref

tree 的引用计数增加一个。

since: 2.22

g_tree_remove

GTree 中移除一个键/值对。

g_tree_remove_all

GTree 中移除所有节点并销毁它们的键和值,然后重置 GTree 的根为 NULL

since: 2.70

g_tree_replace

将新的键和值插入到 GTree 中,就像 g_tree_replace_node() 一样,但这个函数不返回插入或设置的节点。

g_tree_replace_node

将新的键和值插入到 GTree 中,类似于 g_tree_insert_node()。区别在于如果键已存在于 GTree 中,则它将被新键替换。如果你在创建 GTree 时提供了 value_destroy_func,则使用该函数释放旧值。如果你在创建 GTree 时提供了 key_destroy_func,则使用该函数释放旧键。

since: 2.68

g_tree_search

使用 search_funcGTree 中搜索。

g_tree_search_node

使用 search_funcGTree 中搜索。

since: 2.68

g_tree_steal

GTree 中移除一个键及其相关值而不调用键和值销毁函数。

g_tree_traverse

GTree 中的每个节点调用给定的函数。

deprecated: 2.2 

g_tree_unref

tree 的引用计数减少一个。如果引用计数降至 0,则所有键和值将被销毁(如果有指定销毁函数),并且 tree 分配的所有内存将被释放。

since: 2.22

g_tree_upper_bound

获取对应给定键的上界节点,如果树为空或所有树节点键小于或等于搜索键,则返回 NULL

since: 2.68