如何返回指向unique_ptr换行指针的指针
How to return a pointer to a unique_ptr wrapped pointer
如何创建指向封装在unique_ptr中的指针的指针?换句话说,有没有一种合理的方法来编写这个函数:
int **getIterator(std::unique_ptr<int>& p)
{
/* error: lvalue required as unary ‘&’ operand */
return &p.get();
}
我想返回一个指针,用作迭代器,该迭代器的接口需要迭代器。我想传递algo(getIterator(X),getIterater(X)+1),使单个项目看起来像集合。
您正在使用std::unique_ptr<int>
。如果我正确理解你的问题,那么你正在尝试做一些事情,在这种情况下这是不必要的:如果你想遍历int
s,你需要int*
(指向对象的指针),而不是int**
(指向指针的指针)。
使用此:
int* getIterator(std::unique_ptr<int>& p)
{
return p.get();
}
然后,你可以做你想做的事:
algo(getIterator(X), getIterator(X) + 1);
我预计algo
的定义与此类似:
template <class Iter>
Result_type algo(Iter begin, Iter end)
{
//algorithm
}
如果你做了这样的事情:
std::unique_ptr<int> p = /* initialize */;
algo(getIterator(p), getIterator(p) + 1);
您将收到两个类型为int*
的参数,它们可以安全地向前/向后移动并取消引用以获得当前对象的值。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- 为什么 std::unique 不调用 std::sort?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- 将OpenCV C++重写为EmguCV C#-如何使用指针