2013-07-23 45 views
18

當通過在Visual Studio 2012下面的示例代碼步:向量「不操作‘[]’匹配這些操作數」在Visual Studio中的錯誤看

std::vector<int> test; 
test.resize(1); 
test[0] = 4; 

我可以測試設置監視和檢查其零元件。不過,如果我設置測試的手錶[0],我得到的錯誤「沒有運營商‘[]’這些操作數相匹配」:

enter image description here

我怎麼能檢查測試值[0]直接?

+0

你有沒有在Release或Debug模式下編譯? –

+0

調試,很好的問題。 –

+0

請注意,當您調用'resize'時,迭代器和引用通常會失效。 –

回答

39

我發現一個解決方案不依賴於類的內部。操作員調用的擴展形式似乎適用於我。在這種情況下,它下面的代碼:

v.operator[](0) 

我在Visual C++ 2012

2

Visual Studio不支持stl容器的operator []重載,只需在調試時從列表中選擇它,手動設置您感興趣的元素的監視。

編輯:如果你想檢查一個向量裏面一件T對象,將其分配給一個T類型的對象並在其上設置觀測代替

+0

如果向量有10000個元素,並且您想要看到元素5000,該怎麼辦?有沒有一種方便的方法來做到這一點? –

+0

不幸的是,我擔心你必須首次手動完成。 – mewa

+0

關於你的編輯:如果你正在通過一個DLL,這不是一個選項。在這種情況下你會做什麼? –

7

由於@NateKohl指出,在Visual Studio 2012(也可能是早期版本的well)v._Myfirst給出了一個指向底層向量數據的指針,允許你像觀察數組一樣觀察向量。

0

如果使用2D vecotr <矢量<字符串>> DP,和你想獲得DP [我測試] [j]的在VS2013觀察窗口,則可以使用(dp.operator [](I))。操作符[](J)

矢量<矢量<字符串>> DP(N,矢量<串>(n,「」));

(dp.operator [](I))。運營商[](J)

相關問題