将数组的原始指针转换为unique_ptr

海米尔

我正在针对一个黑盒子框架(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());
Prashant Kumar

智能指针非常有用,但最好考虑使用std::vector,因为您注意到它是一个数组。

您可以使用来获得指向数据的指针,因为它是C数组(对于您的旧式接口)data()

std::vector<uint32_t> nums(100);   // creates a vector of size 100
uint32_t *ptr = nums.data();
cdg.generate(ptr);                 // passes uint32_t* as needed

如果需要确保唯一所有权,unique_ptr则是正确的选择。但这听起来像是您确实只想要一些可以清理您的数组的东西,但仍然提供了C方法的原始指针。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将此原始指针情况转换为unique_ptr?

从std :: unique_ptr数组获取原始指针数组

如何将unique_ptr移到原始指针?

将unique_ptr分配给原始指针

将指针的initializer_list转换为unique_ptr的向量

将unique_ptr <Derived>转换为unique_ptr <Base>

如何将int unique_ptr转换为void unique_ptr?

将std :: unique_ptr <Derived>转换为std :: unique_ptr <Base>

是否自动将unique_ptr <Derived>转换为unique_ptr <Base>?

指针数组语法的Unique_ptr

初始化std :: unique_ptr作为原始数组指针的初始化

将原始指针的所有权转移到unique_ptr

unique_ptr 比原始指针快吗?C++

Unique_ptr与原始指针的不同行为

在销毁原始unique_ptr之后,由unique_ptr <T> :: get()返回的指针不是nullptr。

为什么在返回指针时不能将其自动转换为unique_ptr?

如何在gdb中将void指针转换为unique_ptr <T>?

我如何将 std::make_unique<derived>() 转换为 std::unique_ptr<base>

将std :: unique_ptr重置为数组指针有什么问题?

如何正确地将所有权从原始指针移到std :: unique_ptr?

将unique_ptr转换为void *并返回,我需要释放吗?

将vector <int>转换为const unique_ptr <const int []>

C ++如何将已创建的对象转换为unique_ptr

为什么unique_ptr <Derived>隐式转换为unique_ptr <Base>?

从std :: unique_ptr <Dervied>转换为std :: unique_ptr <Base>的成本是多少?

这个shared_ptr如何自动转换为原始指针?

将指针数组转换为双指针

是unique_ptr构造函数初始化原始指针,还是unique_ptr析构函数删除关联的原始指针?

是否可以将const unique_ptr引用(派生类)转换为shared_ptr(基类)