如何在 Visual Studio 调试器中访问 IloIntArray 元素?
How to access IloIntArray elements while in Visual Studio debugger?
大家好 Whosebug,
我正在通过 Concert Technology 库使用 CPLEX 解决 C++ 中的 MILP 模型,该库将变量和参数数组分别编码为 IloVarArray
和 IloArray
对象。我已经阅读了很多关于如何在调试器模式下访问 Visual Studio 上的普通数组的问题。
然而,查询array,i-1
,在立即Window,如果你想访问存储在i-th
位置的值IloIntArray array
不是很有用,因为您会收到一条信息性很强的消息:
IloArray<__int64>: {_impl=0x0000028c514ad968 {_max=4 _sizeof=8 _size=3 ...} }
如您所见,其中包含一条有用的信息,例如数组大小。 array
在其第一个维度上包含三个元素,因为它可能包含多个。如果尝试索引超出数组边界,它甚至不会提示错误!
但是你无法访问数组中的值,除非你包含大量 cout
指令,可能还有一堆 for
循环,以及重建你的项目一百万次,即使在中等尺寸的模型中也非常耗时。
那么,我们是否可以在调试器上轻松访问 IloArray
元素,或者 cout
是我唯一可用的选项吗?
您知道像 IloIntArray 这样的 classes 实际上只是 'handle' classes 吗?除了指向相应 'implementation' class 的实例的指针(通常称为“_impl”)之外,它们几乎不包含(或不包含任何内容)。它们的定义只是为了使使用这些 classes 的语法看起来更清晰(例如,您不需要保留取消引用指针等)。
我曾经有一组 Visual Studio 定义来改变调试器如何显示这些 classes 的实例(参见例如 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/
大家好 Whosebug,
我正在通过 Concert Technology 库使用 CPLEX 解决 C++ 中的 MILP 模型,该库将变量和参数数组分别编码为 IloVarArray
和 IloArray
对象。我已经阅读了很多关于如何在调试器模式下访问 Visual Studio 上的普通数组的问题。
然而,查询array,i-1
,在立即Window,如果你想访问存储在i-th
位置的值IloIntArray array
不是很有用,因为您会收到一条信息性很强的消息:
IloArray<__int64>: {_impl=0x0000028c514ad968 {_max=4 _sizeof=8 _size=3 ...} }
如您所见,其中包含一条有用的信息,例如数组大小。 array
在其第一个维度上包含三个元素,因为它可能包含多个。如果尝试索引超出数组边界,它甚至不会提示错误!
但是你无法访问数组中的值,除非你包含大量 cout
指令,可能还有一堆 for
循环,以及重建你的项目一百万次,即使在中等尺寸的模型中也非常耗时。
那么,我们是否可以在调试器上轻松访问 IloArray
元素,或者 cout
是我唯一可用的选项吗?
您知道像 IloIntArray 这样的 classes 实际上只是 'handle' classes 吗?除了指向相应 'implementation' class 的实例的指针(通常称为“_impl”)之外,它们几乎不包含(或不包含任何内容)。它们的定义只是为了使使用这些 classes 的语法看起来更清晰(例如,您不需要保留取消引用指针等)。
我曾经有一组 Visual Studio 定义来改变调试器如何显示这些 classes 的实例(参见例如 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/