使用unique_ptr的常量字符指针

乔纳森·梅

假设我有一个vector<string> input,我需要将此传递给带有const char**参数的函数。我的想法是使用unique_ptr这样的:

const auto output = make_unique<char*>(size(input));

但我似乎无法将aconst unique_ptr<const*>变成a const char**有没有办法做到这一点,或者是一个更简单的选择?

内森·奥利弗

我只是建立一个指向c_str()字符串的指针的矢量,然后得到一个指向该字符串的指针。

std:vector<const char*> pointers;
pointers.reserve(input.size());
for (const auto& e : input)
    pointers.push_back(e.c_str()); // get const char *'s
auto argument = pointers.data(); // get pointer to const char*'s - const char**

或使用 unique_ptr

auto pointers = std::make_unique<const char*[]>(size(input))
for (size_t i = 0; i < input.size(); ++i)
    pointers[i]= input[i].c_str(); // get const char *'s
auto argument = pointers.get(); // get pointer to const char*'s - const char**

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法使用std :: unique_ptr初始化指针

奇怪的错误:当未真正创建指针时,使用删除的函数'std :: unique_ptr <_Tp,_Dp> :: unique_ptr

指针数组语法的Unique_ptr

unique_ptr <int>悬空指针

双指针的unique_ptr处理

unique_ptr 中的指针()是什么?

与unique_ptr结合使用

使用本地原始指针初始化std :: unique_ptr时会发生什么?

如何使用空指针初始化unique_ptr的向量?

我是否在此通用unique_ptr <>()删除程序中正确使用了指针类?

使用unique_ptr向量的原始指针作为ID进行排序

在std :: unique_ptr的向量上使用make_transform_iterator获取const指针

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

移动unique_ptr之后,指向unique_ptr内容的指针的内容是否有效?

如果我使用unique_ptr的原始指针,然后使用reset,则仍然可以保证原始指针有效吗?

更改std :: unique_ptr中的指针而不破坏它

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

交换指针:相当于`std :: unique_ptr :: swap`

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

如何将unique_ptr移到原始指针?

Unique_ptr与原始指针的不同行为

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

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

将unique_ptr分配给原始指针

Pybind11-返回指向unique_ptr容器的指针

基于unique_ptr参数指针类型的重载函数

如何编写指针和数据为const的unique_ptr

从指针创建一个unique_ptr

使用unique_ptr的单例对象