0
サイズを変更するboost::multi_array
を更新する関数があります。サイズを変更すると、ループ内の配列を更新する(つまり初期化後に更新する)方法はありますか?初期化後にboost::multi_array
を更新(割り当て)するにはどうすればよいですか?サイズを変更するループでboost_array変数を更新する
#include <boost/multi_array.hpp>
#include <iostream>
typedef boost::multi_array<int, 2> A;
A update(const A& a) {
auto s = a.shape()[0];
A b{boost::extents[s+s][3]};
auto b_mid = std::copy(a.begin(), a.end(), b.begin());
std::copy(a.begin(), a.end(), b_mid);
return b;
}
int main() {
A a {boost::extents[5][3]};
int r = 5;
while (r--) {
a = // causes error because the size has changed the sizes of RHS and LHS don't match.
update(a); // Alternatively: a = std::move(update(a));
}
}
問題はタイプA
の代入演算子は、multi_array
又はarray
のサイズを変更できないということです。私はC++ 14を使用していることに注意してください。 std::move()
を使用しても役に立ちませんでした。