phi*_*red 12 c++ tree visualization visual-studio-2008
我一直在为autoexp.dat添加一些类型的可视化工具.即使是每个人都回顾的博客(甚至是微软的家伙!),有时也是一场斗争.
但我完全被#tree可视化工具所困扰.首先,博客文章似乎在其描述中充满漏洞(并且没有其他材料我能够找到地址 - 但其他人已经明确地使其工作).特别是似乎有一些神奇的案例,它知道取消引用一个指针 - 但我无法确定我是否反过来设计了意图.当你使用$ c和$ e时,似乎也存在一些模糊性.AFAICS它们似乎是可以互换的 - 也许两者都可以作为可读性的辅助手段?或者它们真的意味着不同的东西(例如,博客使用$ e,其中VS2008附带的stl可视化器使用$ c).
但真正缺少的是对它们如何融合在一起的解释.我原以为它会遵循这个过程:
显然有一个我左右导航的算法,我已经掩盖了.那不是太重要.更重要的是在每个阶段和解除引用时都会考虑哪些值.
这似乎是我能想到的唯一适合我见过的例子的过程.但我一直无法使用我们的树实现.我只是得到(错误)应该显示#tree子项(我为每个节点得到一个(错误),所以我假设正确捕获了大小).我已经尝试过我能想到的各种变化 - 最多次!
令我困惑的另一件事是,我见过的许多例子,包括捆绑的stl,从头部导航到父级(或类似的),并跳过头节点.他们为什么这样做?
这是我正在使用的可视化工具(我尝试过的其中一种形式 - 名称已更改为保护...公司):
MyTree<*,*,*>{
children(
#(
[raw members]: [$c,!],
#tree
(
head : $c.m_root.m_p,
size : $c.m_size,
left : left.m_p,
right : right.m_p
) : $e.value
)
)
}
Run Code Online (Sandbox Code Playgroud)
这里是我的树类的一些伪代码:
MyTree:
Ptr<Note> m_root
int m_size
Node:
ValueT value
Ptr<Node> left
Ptr<Node> right
Run Code Online (Sandbox Code Playgroud)
...其中Ptr <>是一个智能指针,将原始指针保存在m_p中.
任何帮助将不胜感激.
我们开始真的需要这个!所以我开了一个赏金,但继续自己看着它.
看起来我已经解决了!(对我来说).我其实非常接近:
MyTree<*,*,*>{
children(
#(
[raw members]: [$c,!],
#tree
(
head : $c.m_root.m_p,
size : $c.m_size,
left : left,
right : right
) : $e.value
)
)
}
Run Code Online (Sandbox Code Playgroud)
诀窍是头规则需要完全指定如何到达智能指针内的原始指针,但左/右规则不需要(并且de-ref规则也没有).
归档时间: |
|
查看次数: |
346 次 |
最近记录: |