Graph {class Node {std :: map :: iterator _neighbors [4]; ; std :: map _map; ;
2
1
私は自分のCクラスをデバッグしながら壁にぶつかった。 これはある種のグラフです。
Graph {class Node {std :: map :: iterator _neighbors [4]; ; std :: map _map; ;
基本的に、各ノードはそれを含んでいるクラスのマップにそれらにイテレータを格納することによって正確に4つの隣人を追跡します。
問題は、デバッグ中にVS2008で_mapの内容を表示しようとすると、次のようになることです。
- _地図 - [0]最初 - 二番目 - _neighbors - 最初に_ptr - 二番目 - _neighbors - 最初に_ptr - 二番目 - _neighbors ...
明らかに、インデックス0を持つノードの4つの隣接ノードをマップに表示するのではなく、最初の隣接ノード、次に最初の隣接ノード、次に最初の隣接ノードなどの無限大を表示します。 また、たとえそれが宣言されていたとしても、決して_neighborsが配列として現れることはありません。
私はおそらくSTL表示を強化した VSEDebugと呼ばれるアドオンを見つけました、しかしそれはVS2k3のためです、そして、私はそれを2k8で動かすことができませんでした私自身)。
`_map.operator []`を呼び出そうとすると `CXX0058:Error:overloaded operator not found`が返されるので、イミディエイトウィンドウもあまり役に立ちません。
地図の内容を意味のある形で表示するにはどうすればよいですか。 私はVS全体としてはかなり初心者なので、おそらく詳しい説明が必要になるでしょう。 :)
2 Answer
2
vectorをデバッグし、位置2の要素にアクセスする場合は、次のように入力します。
*(v。_マイファースト2)
もちろん、メンバ_Myfirstは実装に依存します。 しかし、私はあなたがアイデアを得ると思います。 (ビジュアルスタジオはresolvindoオペレータの過負荷としていくつかの問題を抱えています)
1
あなたが好きならカスタムビジュアライザーを書くことにあなたの手を試すことができます、しかし、あなたはすでにいくらか存在する機能を複製することになるかもしれません。 これが基本についての記事です。
すべての配列要素を表示するだけの場合は、クイックウォッチウィンドウに "_map [0] .second._neighbors、4"と入力して4つの配列として表示できますが、これは最も速い方法ではありません。世界。