对于C++中使用智能指针的指针算术限制,有没有一种变通方法

Is there a workaround to the limitation on pointer arithmetic with smart pointers in C++?

本文关键字:指针 有没有 方法 一种 C++ 智能 对于      更新时间:2023-10-16

我正在处理一个项目,不能使用括号表示法,但必须对数组使用智能指针。然而,正如我发现的,智能指针不允许使用指针算术。有解决办法吗?

编辑:该项目是为一门课程设计的,在项目规范中,它说不能使用括号符号,必须使用智能指针形式的动态分配数组。

unique_ptr的专门化是专门为进行指针运算而发明的。使用"未知大小的数组"作为分配的类型。

示例:

std::unique_ptr<int[]> p(new int[5]);
p[1] = 8;
std::cout << p[1];

为了克服人为和毫无意义的限制"不能使用括号符号",将p[1]更改为*(p.get()+1)。但首先要确保你正确理解了限制——在我看来,没有一个头脑正常的人会要求这样的丑化。