我们可以将[]运算符或++与唯一指针或shared_pointer一起使用吗?因为我们将它用于原始指针
int * a = new int[10];
a[0] = 2; // We can use [] operator;
智能指针有类似的方法吗?
如果它应该在什么时候我应该使用它?
答案 0 :(得分:4)
std::unique_ptr和std::shared_ptr都提供operator[]
对存储数组的索引访问。如果他们管理的是阵列,您可以使用它们。
operator[]
可以访问由unique_ptr
管理的数组元素。
e.g。
std::unique_ptr<int[]> a(new int[10]);
a[0] = 2; // We can use [] operator;
注意索引应小于数组中元素的数量;否则,行为未定义。
很遗憾,我们无法直接使用operator++
;这不是smart pointers应该做的事情,它们通常用于管理指针。
如果您只是想要一个数组,我建议您使用std::vector
或std::array
。
答案 1 :(得分:1)
是
这是一个例子 http://en.cppreference.com/w/cpp/memory/unique_ptr/operator_at
std::unique_ptr<int[]> fact(new int[size]);