Как составить список всех ключей на кедре (двойной массив Trie)

0

Я использую эту библиотеку для хранения множества строк. Как получить все ключи из этой библиотеки?

Там только способ получить все значения, строка 228 функции dump:

union { int i; value_type x; } b;
size_t num = 0, from = 0, p = 0;
char key[256] = {0};
for (b.i = begin (from, p); b.i != CEDAR_NO_PATH; b.i = next (from, p)) {
  // b.x is the value
  // which variable that contains 'len' and 'to' 
  //  that I should pass to suffix function?
  suffix(key, len, to);
}

В документации было указано, что для извлечения ключа мы должны вызывать функцию suffix:

void suffix (char* key, const size_t len, size_t to) 

Восстановить ключ подстроки length = len в trie, который достигает узла. ключ должен быть выделен достаточным объемом памяти пользователем (для хранения символа терминала требуется len + 1 байт).

Но как знать, len и to параметру?

Теги:
trie

1 ответ

1

Нашел, то p является len, и from это to:

char key[256] = {0};
for (b.i = begin(from, p); b.i != CEDAR_NO_PATH; b.i = next(from, p)) {
  // b.x is the value
  suffix(key, p, from); // key now should hold the key
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню