我正在一个项目上,不能使用括号表示法,但必须对数组使用智能指针。但是,正如我发现的那样,智能指针不允许使用指针算术。有没有解决方法?
编辑:该项目用于一门课程,并且在项目规格中它表示不能使用括号符号,并且必须使用智能指针形式的动态分配数组。
unique_ptr
的专门技术是专门为进行指针算术而发明的。使用“大小未知的数组”作为分配的类型。
示例:
std::unique_ptr<int[]> p(new int[5]);
p[1] = 8;
std::cout << p[1];
要克服人为的和毫无意义的限制,即“不能使用括号符号”,请将p[1]
更改为*(p.get()+1)
。但是,首先要确保您正确理解了限制-在我看来,在他们的正确思维中没有人可以要求这种丑化。