2016-04-23 6 views
0

Hallo Stackoverflow Gefährten,Zugriff auf IloIntArray-Elemente im Visual Studio-Debugger?

I MILP Modelle in C++ mit CPLEX über die Concert Technologie Bibliothek bin zu lösen, die jeweils variable und Parameterfelder codieren in IloVarArray und IloArray Objekte. Ich habe bereits die zahlreichen Fragen zum Zugriff auf normale Arrays in Visual Studio im Debugger-Modus gelesen.

jedoch für array,i-1 Abfrage auf das Direkt-Fenster, wenn Sie den Wert auf die i-th ein IloIntArray array Position gespeichert zugreifen wollen, ist nicht sehr nützlich, da Sie eine sehr informative Meldung erhalten:

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

Welche, wie Sie sehen können, enthält eine einzige nützliche Information, die Array-Größe z array enthält drei Elemente in ihrer ersten Dimension, da sie mehrere enthalten können. Es wird nicht einmal ein Fehler angezeigt, wenn Sie versuchen, über die Array-Grenzen hinaus zu indizieren!

Sie können jedoch nicht auf die Werte im Array zugreifen, es sei denn, Sie enthalten eine große Menge von cout Anweisungen und potenziell eine Reihe von for Schleifen, sowie Ihr Projekt millionenfach neu aufzubauen, was sehr zeitaufwendig ist sogar in mittelgroßen Modellen.

Also, können wir tatsächlich auf ein IloArray Element zugreifen, während auf Debugger ohne viel Aufwand, oder ist cout meine einzige verfügbare Option?

Antwort

2

Sie wissen, dass Klassen wie IloIntArray eigentlich nur "Handle" -Klassen sind? Diese enthalten wenig (oder nichts) über einen Zeiger (normalerweise '_impl' genannt) auf eine Instanz einer entsprechenden 'Implementierungsklasse'. Sie wurden nur so definiert, dass die Syntax für die Verwendung dieser Klassen sauberer aussieht (z. B. müssen Sie keine Dereferenzierungszeiger usw. beibehalten).

Ich hatte einmal eine Reihe von Visual Studio-Definitionen zum Ändern, wie der Debugger Instanzen dieser Klassen angezeigt (siehe z. B. https://msdn.microsoft.com/en-us/library/aa730838(v=vs.80).aspx), aber das scheint verloren gegangen zu sein, und ich kann keine Kopie mehr finden.

Spätere Versionen von VS eine andere Methode verwenden: https://blogs.msdn.microsoft.com/vcblog/2012/07/12/debugger-type-visualizers-for-c-in-visual-studio-2012/

+0

Vielen Dank! Die Concert Technology ist in der Tat sehr nützlich. Und ich erkenne an, dass es viel einfacher und sauberer ist, Modelle zu erstellen und zu lösen sowie den Zugang zum CPLEX-Optimierungsprozess zu erleichtern, aber es dauert eine Weile, sich daran zu gewöhnen, um es effektiv zu nutzen. Danke für deine Hilfe @TimChippingtonDerrick – Jacko