如何在C ++ STL的vector模板存储其在Visual Studio编译器实现的对象?

<p>我使用autoexp.dat和DLL来改善它在监视窗口中显示数据的方式扩展Visual Studio 2003中的调试器。我使用的是DLL而不仅仅是基本autoexp.dat功能最主要的原因是,我希望能够有条件地显示的东西。例如我希望能够说“如果名称成员不是一个空字符串,显示名称,否则显示[其他成员]” P&gt; </p><p>我是很新的OOP并没有得到与STL的经验。因此,它可能是我失踪了显而易见的。 P&gt; </p><p>我无法显示矢量成员,因为我不知道如何得到的指针的实际值存储在内存中。 P&gt; </p><p>我是不是正确的思维的值存储在一个连续的内存块?而且是有什么办法可以访问的指针,该内存? P&gt; </p><p>谢谢! P&gt; </p><p> [编辑:]为了澄清我的问题(我希望): p&gt; </p><p>在我的DLL,它是由调试器调用,我使用称为ReadDebuggeeMemory函数,这使得由对象使用的存储器的副本。它不对象点复制存储到。所以,我需要知道为了能够调用ReadDebuggeeMemory上以及内部指针的实际地址值。此刻,因为该存储器尚未复制获得向量内容的常规方法正在返回垃圾 P&gt; </p><p> [更新:] P&gt; </p><p>我是越来越垃圾,甚至当我在寻找在正确的指针_Myfirst,因为我创造了载体的额外副本,当我一直在使用一个指针的向量。所以,问题就变成了:你如何通过一个指针向量可以访问的指针向量的记忆?这是否有意义? P&gt;
</p>

30 浏览 1 回复
  gt   一个   指针   使用   存储  

回复

    <p>在一个标准的矢量中的元素分配作为一个连续的内存块。 P&gt; </p><p>您可以通过采取的第一个元素的地址获得一个指向内存: P&gt;</p><p>不过,你可以使用可用来访问向量的经营者,除非你真的需要一个原始指针。 P&gt; </p><h3>修改 H3&gt; </h3><p>现在,你有一个指针的向量,你可以做上面同样的事情: P&gt;</p><p>方法2看起来相当干净,但你可以只提领找回原来的解决方案: P&gt;</p><p>我觉得这可以使设计更加优雅。例如,你必须得到由指针向量?如果是这样,使用,因为这似乎是最简洁的。 P&gt; </p><p>更重要的是,虽然,试图得到一个参考吧。 P&gt; </p><h3>关于您的解决方案 H3&gt; </h3><p>您的解决方案提出了: P&gt;</p><p>唯一的一次,这将工作是对你非常的实现,编译器versio的。这不是标准的,所以这可能不会编译器,甚至是不同版本的编译器之间的工作。 P&gt; </p><p>如果你只开发上单一的平台和放这似乎确定;编译器,但最好还是做的标准方法。 P&gt; </p><p>是,该值存储在一个连续的内存区域,你可以采取的第一个元素的地址自行访问它。 P&gt; </p><p>但是,要知道,这改变载体(例如的push_back)的大小操作可能会导致重新分配的载体,这意味着内存可以移动,无效的指针。如果你使用的迭代器同样的情况。 P&gt;
    </p>

    王萍

相关信息

如何现代编译器使用MMX / 3DNOW / SSE指令?

<p>我已经阅读了x86指令集扩展,并且他们只好像在某个非常具体的情况下有用(如HADDPD - (卧式插件盒装双)在SSE3)。这些要求必须要么故意设置,还是从系列之前的指令发生一定的寄存器布局。你多长时间通用编译器GCC一样真正使用这些指令(或其子集),或者他们主要是在手工编码的汇编中使用?如何编译器检测它是适合使用SIMD指令? P&gt; </p>

61 浏览 1 回复   使用   编译器   编译   指令   情况  

对于C / C ++编译器最佳编译器警告级别?

<p>您推荐不同的C编译器什么的警告级别DO / C ++编译器? P&gt; </p><p> gcc和g ++会让你逃脱了很多默认级别。我觉得对我来说最好的警告级别为“-Wall”。我总是尝试删除修复它的代码生成的警告。 (即使有关使用括号逻辑优先规则,或者说,我真的是傻的人“,如果(X = Y)') P&gt; </p>...

71 浏览 1 回复   gt   警告   ++   编译器   编译  

是否有可能产生使用的Turbo C / C ++编译器一个DLL?

<p>我需要这个调用来自Java类(JNI)的C函数和我知道,有选择使用“微软的Visual C ++编译器”来做到这一点。 (这里)解释 P&gt; </p><p>不过,我想知道是否可以使用[ TC ](http://edn.embarcadero.com/article/21751)或的<a href="" p:="...

20 浏览 1 回复   gt   使用   ++   tc   编译器  

里面种使用枚举 - 编译器警告C4482 C ++

<p>我是用我的类的一个方法中枚举的全名。但我得到它说的<em>编译器警告“警告C4482:非标准扩展使用:枚举'富'在限定的名称中使用” em&gt;的。在C ++中,我们需要使用枚举没有合格的名字吗?但IMO,看起来难看。 P&gt; <p>有什么想法? P&gt; </p></em></p>

50 浏览 1 回复   枚举   gt   使用   警告   编译器  

如何现代编译器使用MMX / 3DNOW / SSE指令?

<p>我一直在阅读了关于x86指令集扩展,并且他们只好像在某个相当具体的情况下有用(如HADDPD - (卧式插件盒装双)在SSE3)。这些要求,需要加以无论是故意的成立,还是从系列之前的指令发生一定的寄存器布局。多久通用的编译器GCC一样真正使用这些指令(或其子集),或者他们主要是在手工编码的汇编程序中使用?如何编译器检测到它是适合使用SIMD指令? P&gt; </p>

43 浏览 1 回复   使用   编译器   编译   指令   情况