gpt4 book ai didi

C++:如何拥有一个 boost::multi_array 数组

转载 作者:行者123 更新时间:2023-11-28 07:52:57 25 4
gpt4 key购买 nike

嗨,我有几个 boost::multi_array 定义如下:

typedef boost::multi_array<double, 3> region_prior_integral_image

我正在尝试创建一个 region_prior_integral_image 的数组像下面这样:

unordered_map<string, int> filename_to_hash_key_map = get_filename_to_hash_key_map();

unordered_map<string, region_prior_integral_image> filename_to_region_prior_map = get_region_prior_integral_images();

region_prior_integral_image* image_cache = new region_prior_integral_image[5];
for(unordered_map<string, int>::iterator it = filename_to_hash_key_map.begin(); it != filename_to_hash_key_map.end(); it++){
image_cache[it->second] = filename_to_region_prior_map[it->first];
}

但是程序终止并显示以下内容:SemanticTextonForest: /home/aly/libs/boost_1_51_0/stage/include/boost/multi_array/multi_array_ref.hpp:488: boost::multi_array_ref<T, NumDims>& boost::multi_array_ref<T, NumDims>::operator=(const ConstMultiArray&) [with ConstMultiArray = boost::multi_array<double, 3ul>, T = double, long unsigned int NumDims = 3ul, boost::multi_array_ref<T, NumDims> = boost::multi_array_ref<double, 3ul>]: Assertion std::equal(other.shape(),other.shape()+this->num_dimensions(), this->shape())' 失败。`

我不知道为什么?

我知道我可以只使用一个 vector ,但为了论证起见,假设我想要一个 region_prior_integral_images 数组

谢谢

最佳答案

假设我们有两个 region_prior_integral_image实例:A 和 B。如果要将 B 分配给 A,例如 A = B; , A 的形状和 B必须相等。错误消息是说,在您的代码中 image_cache[it->second] = filename_to_region_prior_map[it->first]; ,两个数组的形状不同。

您如何在 filename_to_region_prior_map 中创建数组? ?我猜你使用这个构造函数来指定形状:multi_array<double,3> B(boost::extents[i][j][k]) .因此它们的形状是 [i][j][k] .但是当你创建 image_cache ,调用默认构造函数。所以这两个形状不匹配。

我的意见是存储region_prior_integral_image的指针在您的代码中,这也将节省大量拷贝。

关于C++:如何拥有一个 boost::multi_array 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13349964/

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