こんにちは。
多次元配列で multi_array を使い始めたのですが、
boost::multi_array< int, 2 > array ;
array.resize( boost::extents[ 3 ][ 5 ] ) ;
としたとき、array から要素数 3 と 5 を取得するにはどのようにしたらよいのでしょうか ?
array.size() で 3 は取得でき、array[ 0 ].size() で 5 は取得できのですが、boost::extents[ 0 ][ 5 ] となった場合 5 は取得できません。
どなたかご存じの方がいらっしゃいましたら教えていただけないでしょうか。
よろしくお願いします。
えーと、この問題は
> array から要素数 3 と 5 を取得するには
これで解決してるからいいとして
> array.size() で 3 は取得でき、array[ 0 ].size() で 5 は取得でき
> boost::extents[ 0 ][ 5 ] となった場合 5 は取得できません
これは、0番目の要素数が0個なんだから当然じゃないかと思います。
範囲外アクセスですよね。
アキラ さんこんにちは。レスありがとうございます。
範囲外アクセスというのは分かります。
array.resize( boost::extents[ 0 ][ 5 ] ) ;
としたときに、特に例外が発生しているような感じでもないので、
何らかの形で 5 を取得できないものかと思い質問させていただきました。
これはやはり配列をどのくらいで確保したか別途に覚えておく必要が
あるのでしょうか ?
boost::extents[ 0 ][ 5 ]
たぶん、この使い方は想定されていないので
要素数0がありえていいなら、要素数を変数で持つ必要があると思います。
アキラ さんこんにちは。
なるほど。想定外なのですか。そこは気がつきませんでした。
もし 0 を扱うようならば値を保持するようにしたいと思います。
ありがとうございました。
ツイート | ![]() |