gpt4 book ai didi

c++ - "Shallow"Visual Studio Debug模式下STL容器的显示?

转载 作者:搜寻专家 更新时间:2023-10-31 02:00:55 26 4
gpt4 key购买 nike

我在调试 C++ 类时遇到了麻烦。这是一张图表,像这样:

class Graph {
class Node {
std::map<int, Node>::iterator _neighbors[4];
};
std::map<int, Node> _map;
};

基本上,每个节点通过在包含类的映射中存储指向它们的迭代器来跟踪恰好 4 个邻居。

问题是当我在调试期间去显示 VS2008 中的 _map 的内容时,我得到这样的东西:

- _map
- [0]
first
- second
- _neighbors
- _ptr
first
- second
- _neighbors
- _ptr
first
- second
- _neighbors
...

显然,它没有列出 map 中索引为 0 的节点的 4 个邻居,而是列出了它的第一个邻居,然后是第一个邻居的第一个邻居,然后是它的第一个邻居,依此类推,直到无穷大。此外,_neighbors 在任何时候都不会显示为数组,即使它是这样声明的。

我找到了一个名为 VSEDebug 的插件据说增强了 STL 显示,但它适用于 VS2k3,我无法让它在 2k8 中工作(既不是二进制文件,也不是我自己编译的)。

即时窗口也没有太大帮助,因为尝试调用 _map.operator[] 返回 CXX0058:错误:未找到重载运算符

关于如何有意义地显示我的 map 内容有什么想法吗?请注意,作为一个整体,我对 VS 还很陌生,所以我可能需要详细的说明。 :)

最佳答案

您可以在命令窗口 - 即时 窗口中键入交易品种的名称,然后开始跟踪其成员指针。例如,如果您调试一个名为 v 的 std::vector 并想访问它在位置 2 的元素,请键入

*(v._Myfirst + 2)

当然,成员_Myfirst 取决于实现。但我想你明白了。 (visual studio 在解决运算符重载方面存在一些问题)

关于c++ - "Shallow"Visual Studio Debug模式下STL容器的显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1372720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com