我正在处理一个项目,不能使用括号表示法,但必须对数组使用智能指针。然而,正如我发现的,智能指针不允许使用指针算术。有解决办法吗?
编辑:该项目是为一门课程设计的,在项目规范中,它说不能使用括号符号,必须使用智能指针形式的动态分配数组。
unique_ptr
的专门化是专门为进行指针运算而发明的。使用"未知大小的数组"作为分配的类型。
示例:
std::unique_ptr<int[]> p(new int[5]);
p[1] = 8;
std::cout << p[1];
为了克服人为和毫无意义的限制"不能使用括号符号",将p[1]
更改为*(p.get()+1)
。但首先要确保你正确理解了限制——在我看来,没有一个头脑正常的人会要求这样的丑化。