C ++: как получить массив boost :: multi_array

Привет у меня есть несколько 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>]: Assertionstd :: equal (other.shape (), other.shape () + this-> num_dimensions (), this-> shape ()) ‘не удалось

И я понятия не имею, почему?

Я знаю, что мог бы просто использовать вектор, но для аргументов, скажем, я хотел бы получить массив region_prior_integral_images

Спасибо

0

Решение

Допустим, у нас есть два 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 в вашем коде, который также сохранит много копий.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]