在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!
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何在C++中将数组转换为矢量指针
- 将矢量<T>转换为矢量<数组<T>>
- JSON转换为nlohmann JSON-lib中的结构数组
- 将C++中的数组转换为字符串
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 将 int 数组转换为 std::vector<int*>
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- 将链表转换为指针数组时出错
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- 将字节数组转换为带有字节序问题的指针
- 使用 stbi_write_png,如何将 0 和 1 的矩形字节数组转换为单色 png 文件?
- 将浮点数转换为无符号字符数组并打印出来
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 在 c++ 中动态强制转换 ** 数组
- 返回并强制转换数组指针(错误:数组下标的类型..无效)
- 用于递归模板求值的强制转换数组类型
- node.js中使用node-gyp的转换数组
- 如何转换数组中的参数列表