c++ - 共享指针 [] 运算符和++ 运算符

标签 c++ arrays pointers smart-pointers

我们可以将 [] 运算符或++ 与唯一指针或 shared_pointer 一起使用吗?当我们将它用于原始指针时

int * a = new int[10];
a[0] = 2; // We can use [] operator;
  • 智能指针有没有类似的方法?

  • 如果有,我应该什么时候使用它?

  • 如果不存在,那是为什么?
  • 多维数组也可以吗?

最佳答案

两者都是std::unique_ptrstd::shared_ptr提供 operator[] 以对存储的数组进行索引访问。如果他们管理的是数组,则可以使用它们。

operator[] provides access to elements of an array managed by a unique_ptr.

例如

std::unique_ptr<int[]> a(new int[10]);
a[0] = 2; // We can use [] operator;

注意下标要小于数组中元素的个数;否则,行为未定义。

不幸的是,我们不能直接对它们使用operator++;那不是什么smart pointers应该这样做,它们通常用于管理指针。

如果您只需要一个数组,我建议您使用 std::vectorstd::array

关于c++ - 共享指针 [] 运算符和++ 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40170003/

相关文章:

arrays - 没有得到数组的最大元素

ios - 过滤今天、昨天的 NSDate 数组以进行绘图

c++ - 具有 0 个元素的数组

c++ - C++ 中 RUBY 的 GEMS 相当于什么?

c++ - 字符串编码问题?

C++跨平台轻量级文件、线程和处理库

c - 左值需要作为一元 ‘&’ 操作数——将函数结果作为指针传递

c++ - 如何获得物体的距离以及如何正确使用相机校准矩阵?

c++ - 数组在函数中作为参数传递并被访问,那么为什么函数返回后数组的值会被修改呢?

c - 二维数组的动态分配