Я работаю в 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);
Но как я могу объявить структуру моего узла для чего-то подобного?
Спасибо!
Хорошо, две вещи
Во-первых, не забудьте использовать двойные кавычки "
при обращении к строкам. Одиночные кавычки относятся к одному символу, и вы получите ошибки.
Во-вторых, код, который вы связали, сделан для хранения целых чисел. Да, вы можете расширить его для хранения своего собственного типа, но я рекомендую сначала попытаться понять, что он делает с целыми числами.
Как только вы это поймете, разверните класс до шаблона или просто объявите вместо него тип ключа (в настоящее время int) как пару ключ-значение.