gpt4 book ai didi

c++ - 有没有简单的方法来动态增加 boost::multi_array 维度?

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:57 27 4
gpt4 key购买 nike

MultiArray与使用 std::vector 创建多数组相比,在 boost 中有很多优势。但是,我对 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> >在上面的代码中做了。

最佳答案

myarray.reshape(extents[newSizeY][newSizeX]);

有效。顺便说一句,你不能做类似的事情

boost::multi_array<int,2> foo;
// Reshape first before the following call
foo = some_function_that_returns_multi_array()

这让我抓狂了好几次。你必须 reshape

使用 multi_array 的优点是数据存储在一个连续的 block 中,这有助于更好的缓存局部性,但在“真实世界”测试中我注意到您仍然可以使用简单的 std 获得显着的性能改进::array<> 有时,但 YMMV

关于c++ - 有没有简单的方法来动态增加 boost::multi_array 维度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17806894/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com