Я построил GLib GTree
, который содержит пары ключ / значение, где ключ - это символ (например, «a»), а значение - это частота, с которой этот символ появляется в строке.Например, если строка была 'aaa', то единственным элементом в дереве был бы: 'a' => 3.
Что я хочу сделать, это выполнить итерацию по дереву и вести подсчет числасимволов с заданной частотой, то есть там, где значение пары ключ / значение совпадает.
Псевдокод будет выглядеть примерно так:
frequency_count = 0
while (current_element = get_next_element)
if (current_element->value == desired_frequency)
frequency_count = frequency_count + 1
Есть ли способ сделать это с помощьюGTree
?Единственная функция, которую я могу найти, это g_tree_foreach()
, но для этого требуется, чтобы я передал функцию обратного вызова, которая возвращает TRUE
, чтобы прекратить обход дерева, и я не хочу останавливать обход, пока не посетил каждый элемент.Должен ли я использовать параметр gpointer user_data
функции обратного вызова для передачи подсчета частоты и желаемых значений частоты?