c++ - 计算C++中树形结构的内存使用情况

标签 c++ memory tree trie

我有一个树形结构

struct TrieNode {
    std::unordered_map<std::string, TrieNode> children;
    std::vector<std::string> terminals;
};

有关其用法的一些详细信息:
  • 填充树后,将不会对其进行修改。
  • 无序映射中的键是短字符串(不超过5个字符)。

  • 这种结构可能会变得很大。我需要计算它在内存中的大小。此大小不必非常精确。
    是否有任何现有方法可以做到这一点?

    如果没有,我在考虑以下选项:
  • 我可以单独跟踪对此结构的修改。
  • 对容器使用自定义分配器,以跟踪空间(是否有通用的实现方式?)。
  • 为我的结构重载new运算符以跟踪内存(不知道之后如何跟踪vector中的插入)。
  • 通过遍历整棵树来计算填充树后的大小(对于大树,最后的选择是花费很长时间,但结果更为精确)。

  • 最好的方法是什么?

    最佳答案

    最后一个。我有以下原因:

  • 这是四种方法中最简单的一种。
  • 因为树在填充后是固定的,所以懒惰地评估大小更有意义,因为:
  • 在不使用大小的情况下,我们可以节省花费在计算大小上的时间。
  • 不会花费额外的时间,因为时间复杂度也是O(n),所以唯一花费的时间是调用递归函数。
  • 它避免了全局变量
  • 的存在

    关于c++ - 计算C++中树形结构的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61389709/

    相关文章:

    c++ - 修改后的 std::invoke/std::apply,将可调用对象作为 void* - 可能吗?

    c++ - 在 C/C++ 中迭代字母表

    c++ - 嵌套 C++ 模板中的引用类型

    c - 如何在 c 中使用 free() 函数?

    angular - 尝试使按钮折叠/展开 Angular Material 嵌套树时出错

    c++ - 我正在尝试使用此代码查找二叉树的高度,但它始终返回0,有人可以告诉我为什么吗?

    安卓内存测试

    .net - C++/CLI 中的内存共享

    C数据结构到磁盘

    javascript - 如何以不同的树状布局的形式显示JSON数据?