私のコードでは、内部配列が固定次元である配列の配列を考慮する必要があります。STLアルゴリズムを利用するには、実際にデータを配列の配列として格納すると便利ですが、フラット化されたCスタイルの配列を使用するCライブラリにそのデータを渡す必要もあります。
多次元配列を安価に、そしてポータブルな方法で変換(つまりフラット化)できるのは素晴らしいことです。私は非常に単純なケースに固執します、本当の問題はより一般的です。
struct my_inner_array { int data[3]; };
std::vector<my_inner_array> x(15);
は
&(x[0].data[0])
xと同じエントリを含むサイズ45*sizeof(int)のメモリの連続ブロックへのポインタ?それとも、位置合わせについて心配する必要がありますか?これは(少なくとも特定のデータ型と内部配列サイズでは)機能するのではないかと思いますが、移植性はありません。
- このコードは移植可能ですか?
- そうでない場合、それを機能させる方法はありますか?
- そうでない場合、私にできることについて何か提案はありますか?
- my_inner_arrayがPOD構造体ではないが、いくつかのメソッドが含まれている場合(クラスに仮想メソッドが含まれていない限り)、何かが変更されますか?