У меня есть древовидная структура
struct TrieNode {
std::unordered_map<std::string, TrieNode> children;
std::vector<std::string> terminals;
};
Некоторые сведения о его использовании:
- Дерево не изменяется после его заполнения.
- Ключи на неупорядоченной карте - короткие строки (не превышающие 5 символов).
Эта структура может стать очень большой. И мне нужно рассчитать его размер в памяти. Этот размер не должен быть очень точным. Существуют ли какие-либо подходы для этого?
Если нет, я думал об этих вариантах:
- Я могу отслеживать изменения этой структуры отдельно.
- Используйте специальный распределитель для контейнеров, который отслеживает пространство (есть ли общая реализация для этого?). Оператор
- Overload
new
для моей структуры, чтобы отслеживать память (не уверен, как отслеживать вставки в vector
после этого). - Рассчитать размер после заполнения дерева путем обхода всего дерева (в крайнем случае, для большого дерева это займет очень много времени, но результат будет более точным).
Какой подход лучше?