对于C++中使用智能指针的指针算术限制,有没有一种变通方法
Is there a workaround to the limitation on pointer arithmetic with smart pointers in C++?
我正在处理一个项目,不能使用括号表示法,但必须对数组使用智能指针。然而,正如我发现的,智能指针不允许使用指针算术。有解决办法吗?
编辑:该项目是为一门课程设计的,在项目规范中,它说不能使用括号符号,必须使用智能指针形式的动态分配数组。
unique_ptr
的专门化是专门为进行指针运算而发明的。使用"未知大小的数组"作为分配的类型。
示例:
std::unique_ptr<int[]> p(new int[5]);
p[1] = 8;
std::cout << p[1];
为了克服人为和毫无意义的限制"不能使用括号符号",将p[1]
更改为*(p.get()+1)
。但首先要确保你正确理解了限制——在我看来,没有一个头脑正常的人会要求这样的丑化。
相关文章:
- 对于C++中使用智能指针的指针算术限制,有没有一种变通方法
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 有没有将变量名称转换为双指针的简短方法?
- 有没有办法在同名类 (c++) 中为对象分配一个指针变量
- 有没有办法复制派生类指针的向量而不将其强制转换为基类?
- 有没有办法在没有虚拟的情况下使用基类指针调用派生类函数
- 有没有办法在没有reinterpret_cast的情况下保存多种类型的指针?
- 有没有办法根据用户参数设置函数指针?
- 有没有办法在递归中使用指针来查找数组的最小值?
- 有没有更好的方法来添加两个智能指针?
- 有没有办法使用初始化到第一行的指针访问 2d 数组的第二行?
- 在C++中,有没有办法区分基类指针指向的实例类?
- 有没有其他方法可以将地址分配给指针变量
- 有没有办法防止分配指针?
- 有没有一种 stl 方法来执行指针向量的深度复制
- 有没有办法使用基于范围的迭代器来迭代对指针列表值的引用?
- 有没有办法在不引用其模板类型的情况下转发声明指向类的指针
- 有没有办法通过链表,而不是规范的指针将是唯一的?
- 有没有办法重写一个返回指向 istringstream 的指针的函数,而不是返回一个引用?
- 如果我有一个将指针变量作为输入的函数,有没有办法将函数作为参数传递