【发布时间】:2017-07-05 10:24:16
【问题描述】:
我正在使用一个黑盒框架 (cdg),它用值填充 uint32_t 的数组。
调用看起来像这样:
std::size_t dataCount = 100;
uint32_t* data = new uint32_t[dataCount];
cdg.generate(data);
不幸的是,框架不使用模板,所以我必须传入一个uint32_t*。为了摆脱原始指针,我想将它“包装”成std::unique_ptr<uint32_t>。因此它是一个数组,我认为我必须使用
std::unique_ptr<uint32_t[]>。有没有办法将原始指针转换为unique_ptr 或者我应该这样做:
const std::size_t dataCount = 100;
std::unique_ptr<uint32_t[]> data = std::make_unique<uint_32_t[]>(dataCount);
cdg.generate(data.get());
【问题讨论】:
-
使用
std::vector和std::vector::data()? -
为什么不使用 uint32_t 的向量?
-
如果
dataCount是常量,则使用std::array -
你有没有尝试过?
-
@gurka 数组选项是有效的,但只要对要求的一致性有疑问,我就会反对它。
标签: c++ arrays pointers c++14 unique-ptr