C++ 有没有简单的方法可以动态增加boost::multi_数组维度?

C++ 有没有简单的方法可以动态增加boost::multi_数组维度?,c++,boost,stl,C++,Boost,Stl,与使用std::vector创建多个阵列相比,in-boost具有许多优势。然而,我对BOOST中的多阵列感到不舒服的一点是,创建一个可以轻松更改其大小的多阵列并不容易。我有以下代码来说明我的观点: 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; t

与使用std::vector创建多个阵列相比,in-boost具有许多优势。然而,我对BOOST中的多阵列感到不舒服的一点是,创建一个可以轻松更改其大小的多阵列并不容易。我有以下代码来说明我的观点:

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);
向量my_2d_数组;
向量温度;
温度推回(3);
温度推回(4);
我的二维数组。向后推(临时);
温度透明;
温度推回(4);
温度推回(5);
我的二维数组。向后推(临时);
温度透明;
温度推回(41);
温度推回(51);
我的二维数组。向后推(临时);
从上面的代码可以看出,使用
向量
数据结构,我们可以很容易地增加多数组的维数。但是对于boost::multi_数组,在使用它之前必须使用
boost::extensts
来确定多数组的维度。我想知道boost::multi_数组是否也有一种简单的方法可以像上面代码中的
向量那样增加其维数

myarray.reshape(extents[newSizeY][newSizeX]);
工作。顺便说一句,你不能做这样的事情

boost::multi_array<int,2> foo;
// Reshape first before the following call
foo = some_function_that_returns_multi_array()
boost::多数组foo;
//在下一次调用之前先重塑形状
foo=返回多数组()的某个函数
这让我有好几次出局。你必须重塑

使用multi_数组的优点是,数据存储在一个连续的块中,这有助于提高缓存的局部性,但在“真实世界”测试中,我注意到,有时使用简单的std::array仍然可以获得显著的性能改进,但是使用YMMV

工作。顺便说一句,你不能做这样的事情

boost::multi_array<int,2> foo;
// Reshape first before the following call
foo = some_function_that_returns_multi_array()
boost::多数组foo;
//在下一次调用之前先重塑形状
foo=返回多数组()的某个函数
这让我有好几次出局。你必须重塑


使用multi_数组的优点是数据存储在一个连续的块中,这有助于提高缓存的局部性,但在“现实世界”测试中,我注意到偶尔使用简单的std::数组仍然可以获得显著的性能改进,但YMMV

我认为名称是
重塑
,是的,IIRC它有它最大的区别是
boost::multi_array
是一个连续的内存块,而
std::vector
只有内部向量是连续的。这两者之间有一个折衷。我认为名称是“重塑”
,是的,IIRC它有很大的区别是
boost::multi_array
是一个连续的内存块,而
std::vector
只有内部向量是连续的。这两者之间有一个权衡。