如何解决多维数组的向量
| 有没有办法制作多维数组的向量?我试图制作一个以二维整数数组为元素的向量,但是vector<int[4][4]>
不起作用。正确的做法是什么?
解决方法
您根本不能拥有数组的向量。标准容器元素类型必须是可复制的,并且数组不可复制。
但是,您可以有一个向量向量,例如:
std::vector<std::vector<int> >
玩这个。
或者,坚持使用数组:
std::vector<boost::array<int,N> >
或者,如果您具有C ++ 0x:
std::vector<std::array<int,N> >
{boost,std}::array
是围绕自动存储持续时间数组的对象包装,因此它与您最初尝试的内容非常接近。
, 内置多维数组无法做到这一点。
但是您可以使用Boost多维数组。
该链接很好地解释了为什么它不可行。基本上,类型int [4] [4]是不可分配的。
, 正如@vrince在评论中建议的那样,您可以具有一个封装int[4][4]
的类/结构:
struct My2DArray {
int a[4][4];
};
并为以上声明vector
:
vector<My2DArray> obj;
为简便起见,您可以定义各种ѭ9和ѭ10方法(例如,复制构造函数,赋值运算符等)来处理它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。