Хранение пары ключ-значение в B-дереве

Я работаю в B-Tree, но я не могу понять, как это работает.

Ища несколько примеров, я нашел это страница это объясняет, как написать код для этой структуры.

Проблема в:

class BTreeNode {
private
int *keys;  // An array of keys
int t;      // Minimum degree (defines the range for number of keys)
BTreeNode **C; // An array of child pointers
int n;     // Current number of keys
bool leaf; // Is true when node is leaf. Otherwise false
public:
BTreeNode(int _t, bool _leaf);   // Constructor

friend class BTree;
};

Если это узел моего дерева, в котором хранятся все ключи в некотором диапазоне, в какой части я могу найти мои данные?
Предположим, что я хочу сохранить строку, как я могу получить эту строку?

Я хочу получить что-то вроде:

BTree.insert(1,'hello');
BTree.insert(2,' ');
BTree.insert(3,'world');
BTree.insert(4,'!');

Затем, когда я хочу получить некоторые данные по связанному идентификатору …

BTree.getById(4);

Но как я могу объявить структуру моего узла для чего-то подобного?

Спасибо!

0

Решение

Хорошо, две вещи

Во-первых, не забудьте использовать двойные кавычки " при обращении к строкам. Одиночные кавычки относятся к одному символу, и вы получите ошибки.

Во-вторых, код, который вы связали, сделан для хранения целых чисел. Да, вы можете расширить его для хранения своего собственного типа, но я рекомендую сначала попытаться понять, что он делает с целыми числами.

Как только вы это поймете, разверните класс до шаблона или просто объявите вместо него тип ключа (в настоящее время int) как пару ключ-значение.

2

Другие решения


По вопросам рекламы [email protected]