| |
Для создания или удаления GTree, используйте пару конструктор-деструктор, приведенную в списке функций 2..12. GCompareFunc аналогична функции сравнения "qsort()", описанной для GSList; в данном случае она используется для сравнения ключей в дереве.
GTree *g_tree_new(GCompareFunc key_compare_func) void g_tree_destroy(GTree *tree)
Функции для манипулирования содержимым дерева показаны в списке функций 2..13. Все очень прямолинейно; "g_tree_insert()" перезаписывает любое существующее значение, поэтому будьте осторожны, если существующее значение является указателем на область выделенной памяти. Если "g_tree_lookup()" не может найти ключ, она возвращает NULL, иначе она возвращает связанное с ключом значение. И ключи, и значения имеют тип gpointer, но макросы "GPOINTER_TO_INT()" и "GPOINTER_TO_UINT()" позволяют вам использовать целые числа.
void g_tree_insert(GTree *tree, gpointer key, gpointer value) void g_tree_remove(GTree *tree, gpointer key) gpointer g_tree_lookup(GTree *tree, gpointer key)
Существуют две функции, показанные в списке функций 2..14, которые дают вам информацию, насколько большим является дерево.
gint g_tree_nnodes(GTree *tree) gint g_tree_height(GTree *tree)
Используя "g_tree_traverse()" (список функций 2..15), вы можете проходить все дерево. Для ее использования вы должны обеспечить GTraverseFunc, которой передается каждая пара ключ-значение и аргумент data, который вы передаете в "g_tree_traverse()". Прохождение дерева продолжается до тех пор, пока GTraverseFunc возвращает FALSE; если она возвращает TRUE, прохождение прекращается. Вы можете использовать это для поиска значения в дереве. Вот определение GTraverseFunc:
typedef gint (*GTraverseFunc) (gpointer key, gpointer value, gpointer data);
GTraverseType - это перечисление; возможны 4 значения. Вот их смысл применительно к GTree.
void g_tree_traverse(GTree *tree, GTraverseFunc traverse_func, GTraverseType traverse_type, gpointer data)
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |