繁体   English   中英

在C ++中将向量转换为数组

[英]converting vector to array in C++

我有一个关于从std :: vector转换为数组的问题。 我有一个指向对象的指针。 如何将其转换为指向C ++中的对象的指针数组?

向量是std::vector<pin*> *_PINS

我想将其转换为pin** pins_arr

我已经尝试了这里提出的所有建议,但是没有用

我猜它不起作用的原因是因为我将对象的指针作为类型而不是基本类型。

您能帮我吗? 我整个上午都被困住了。

谢谢,

编辑:如果您真的坚持要进行这样的转换,我想您可以按此顺序执行一些操作:

std::vector<PIN *> *_PINS;

_PINS = new std::vector<PIN *>;

// make life a little easier:
std::vector<PIN *> tmp = *_PINS;

PIN *pins = new PIN *[10];

for (int i=0; i<10; i++)
    pins[i] = tmp[i];

PIN **ppins = &pins;

不过,我必须同意Ed.S的意见-您在这里所做的事情首先使使用std::vector大多数目的失去了作用,并且坦率地让我觉得有点愚蠢。

成员函数data ()返回数组,因此_PINS-> data()应该起作用...

所以,首先 为什么要使用指针向量? 为什么要存储指向向量的指针? 这绕过了媒介为您管理内存的能力,几乎可以肯定是错误的。 让向量执行其应有的作用,它会在后台为您处理动态分配和clanup。

向量可确保其内存存储在连续空间中,因此第一个元素的地址可用作指针,即数组。 当存储指向向量的指针时,您将再次消除其根据范围确定性地进行清理的能力。 在您手动对其调用delete之前,析构函数将不会运行。

您实际上是在这里将向量用作数组。 同样,这是错误的。 向量本身是一个轻量级的对象,没有充分的理由对其进行动态分配。 vector&传递给需要使用它的函数。

但是,更重要的是; 你做错了。 只需使用此:

using std::vector;

//...

vector<pin> pins;  // that's it!  really!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM