2016-04-23 7 views
0

こんにちはStackOverflowのフェロー、Visual StudioデバッガでIloIntArray要素にアクセスする方法は?

私はIloVarArrayIloArrayオブジェクトにそれぞれの変数とパラメータの配列をコードしているコンサートの技術ライブラリ経由CPLEXとC++でのMILPモデルを解決しています。私はすでに、デバッガモードでVisual Studio上の通常の配列にアクセスする方法に関する多数の質問を読んでいます。

IloArray<__int64>: {_impl=0x0000028c514ad968 {_max=4 _sizeof=8 _size=3 ...} } 
:あなたは、高度情報メッセージを取得するようお IloIntArray arrayi-th位置に格納された値にアクセスしたい場合

しかし、イミディエイトウィンドウに、array,i-1を照会することは非常に便利ではありません

あなたが見ることができるように、1つの有用な情報が含まれています。 arrayには、最初の次元に3つの要素が含まれています。配列境界を越えてインデックスを作成しようとすると、エラーを表示しません。

多くの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