我有一个运行时组件,我需要一些给定int16*
的原始指针Platform::Array<uint16>
。和int16 buffer[20]
一样,但我不知道编译时的大小。
如何在不给缓冲区提供固定大小的情况下获得此结果?
ConvertArray(const Platform::Array<uint16>^ bytes)
{
int16 buffer[bytes->Length]; // doens't work
int16 buffer[20]; // works, but I never know what size it needs to be
....
}
有任何建议如何做到这一点?
答案 0 :(得分:0)
如果您需要的是为数据提供原始指针,例如将其提供给某个C库,那么通常可以从中获取这样的指针更高层次的数据结构。
您可以使用Platform::Array<T> array
从array.Data()
获取原始指针。
同样,您可以使用std::vector<T> vec
从vec.data()
获取原始指针。
但执行此操作时需要注意的一点是:根据数据结构(请参阅其文档),在修改数据结构时,以这种方式获得的原始指针可能会无效。在std::vector
的情况下,当插入或删除元素(即更改大小)时会发生这种情况,因为实现可能会选择为内容重新分配不同大小的内存。