2016-04-23 35 views
0

嗨計算器研究員,如何在Visual Studio調試器中訪問IloIntArray元素?

我通過音樂會技術庫,分別編碼變量和參數數組到IloVarArrayIloArray對象解決用C MILP模型++與CPLEX。我已經閱讀了許多有關如何在調試器模式下訪問Visual Studio上的普通數組的問題。

IloArray<__int64>: {_impl=0x0000028c514ad968 {_max=4 _sizeof=8 _size=3 ...} } 

然而,查詢array,i-1,在立即窗口,如果要訪問存儲在一個IloIntArray arrayi-th位置的值,你得到一個高度信息性消息不是很有用

其中,如您所見,包含一條有用的信息,數組大小eg array在其第一維上包含三個元素,因爲它可能包含多個元素。如果試圖超出數組範圍,它甚至不會提示錯誤!

但是,除非您包含大量的cout指令以及潛在的一堆for循環,並且重建項目一百萬次,這非常耗時,否則您無法訪問陣列中的值即使在中等大小的模型中。

那麼,我們實際上可以在調試器上訪問一個IloArray元素而沒有太多麻煩,或者是我唯一可用的選項是cout

回答

2

你知道像IloIntArray這樣的類實際上只是'處理'類嗎?除了指向相應的'實現'類的實例的指針(通常稱爲'_impl')之外,它們幾乎沒有(或沒有)。他們只是定義爲使這些類的語法看起來更清晰(例如,您不需要保持取消引用指針等)。

我曾經有一套Visual Studio定義,用於更改調試器顯示這些類的實例的方式(請參閱(例如)https://msdn.microsoft.com/en-us/library/aa730838(v=vs.80).aspx),但似乎已經丟失,而且我無法再找到副本。

VS的後續版本使用不同的方法:https://blogs.msdn.microsoft.com/vcblog/2012/07/12/debugger-type-visualizers-for-c-in-visual-studio-2012/

+0

非常感謝!音樂會技術確實非常有用。我承認,構建和解決模型以及促進對CPLEX優化過程的訪問是一種更簡潔,更簡單的方法,但需要一段時間才能熟練使用它以便有效地使用它。感謝您的幫助@TimChippingtonDerrick – Jacko