我们可以将 [] 运算符或++ 与唯一指针或 shared_pointer 一起使用吗?当我们将它用于原始指针时
int * a = new int[10];
a[0] = 2; // We can use [] operator;
智能指针有没有类似的方法?
如果有,我应该什么时候使用它?
- 如果不存在,那是为什么?
- 多维数组也可以吗?
最佳答案
两者都是std::unique_ptr和 std::shared_ptr提供 operator[]
以对存储的数组进行索引访问。如果他们管理的是数组,则可以使用它们。
operator[]
provides access to elements of an array managed by aunique_ptr
.
例如
std::unique_ptr<int[]> a(new int[10]);
a[0] = 2; // We can use [] operator;
注意下标要小于数组中元素的个数;否则,行为未定义。
不幸的是,我们不能直接对它们使用operator++
;那不是什么smart pointers应该这样做,它们通常用于管理指针。
如果您只需要一个数组,我建议您使用 std::vector
或 std::array
。
关于c++ - 共享指针 [] 运算符和++ 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40170003/