0

パラメータを取る関数がありfloat**ます。type の変数に値がありますstd::vector<std::vector<float>>

一時的な割り当てなしでそのような変換を行うことは可能float*[]ですか?

4

3 に答える 3

4

直接ではありませんが、「内部」ベクトルからデータをコピーする必要はありません。data()代わりに、各内部ベクトルの属性へのポインターの配列を作成できます。

于 2012-10-20T19:52:30.760 に答える
2

これはうまくいきます:

std::vector<std::vector<float>> source;

std::vector<float*> target(source.size());
for (int i = 0; i < source.size(); ++i)
  target[i] = &*source[i].begin();

std::vector<>ご覧のとおり、内側の sをコピーする必要はありませんが、外側を再作成する必要があります。Astd::vector<>はそのメンバーの線形ストレージを保証するため (C 配列と互換性があることを意味します)、内部ベクトルに対して機能します。

于 2012-10-20T19:52:47.157 に答える
1

2 つのループfloat**で の値を入力して、手動で変換を行う必要があります。vector<vector<float> >

float*いずれにせよ、インナーを割り当てる必要があります。

于 2012-10-20T19:52:36.440 に答える