【发布时间】:2013-07-23 09:52:34
【问题描述】:
MultiArray in boost 与使用 std::vector 创建多数组相比有很多优势。但是,我对 BOOST 中的 MultiArray 感到不舒服的一件事是,创建一个可以轻松更改其大小的多数组并不容易。我有以下代码来说明我的观点:
vector<vector<int> > my_2d_array;
vector<int> temp;
temp.push_back(3);
temp.push_back(4);
my_2d_array.push_back(temp);
temp.clear;
temp.push_back(4);
temp.push_back(5);
my_2d_array.push_back(temp);
temp.clear;
temp.push_back(41);
temp.push_back(51);
my_2d_array.push_back(temp);
从上面的代码可以看出,使用vector<vector<int> >数据结构,我们可以很容易的增加多数组的维数。但是使用 boost::multi_array,你必须在使用之前使用boost::extents 来确定多数组的维度。我想知道 boost::multi_array 是否也有一种简单的方法来增加它的维度,就像上面代码中的 vector<vector<int> > 所做的那样。
【问题讨论】:
-
我认为名字是
reshaping,是的,IIRC 有它 -
最大的区别是
boost::multi_array是一个连续的内存块,而std::vector<std::vector<int>>只有内部向量是连续的。两者之间存在权衡。