2016-10-21 20 views
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()を使用しても役に立ちませんでした。

答えて

1

.reshapeあなたが望むものになることができます。

関連する問題