Visual Studio 2012 で次のサンプル コードを実行すると、次のようになります。
std::vector<int> test;
test.resize(1);
test[0] = 4;
テストでウォッチを設定し、その 0 番目の要素を調べることができます。ただし、test[0] にウォッチを設定すると、「これらのオペランドに一致する演算子 "[]" がありません」というエラーが表示されます。
test[0] の値を直接検査するにはどうすればよいですか?
Visual Studio 2012 で次のサンプル コードを実行すると、次のようになります。
std::vector<int> test;
test.resize(1);
test[0] = 4;
テストでウォッチを設定し、その 0 番目の要素を調べることができます。ただし、test[0] にウォッチを設定すると、「これらのオペランドに一致する演算子 "[]" がありません」というエラーが表示されます。
test[0] の値を直接検査するにはどうすればよいですか?
クラスの内部構造に依存しない解決策を 1 つ見つけました。演算子呼び出しの拡張形式は、私にとってはうまくいくようです。この場合、次のコードです。
v.operator[](0)
Visual C++ 2012 でテストしました。
@NateKohl が指摘したように、Visual Studio 2012 (およびおそらくそれ以前のバージョン) ではv._Myfirst
、基になるベクター データへのポインターが提供され、配列であるかのようにベクターを監視できます。
Visual Studio は stl コンテナーの operator[] オーバーロードをサポートしていません。デバッグ中にリストから選択して、関心のある要素に手動でウォッチを設定するだけです。
編集: ベクトル内の T オブジェクトを検査する場合は、それを T オブジェクトに割り当て、代わりにウォッチを設定します。