0

それはあなたにとって簡単な質問だと思います....私はC ++でかなり新しいです.....

だから私はこのように定義されたベクトルを持っています:

vector<vector<float> > big_vector;

ファイルを読み取ってこのベクトルを初期化すると、big_wector には約 200,000 の要素が含まれています。それぞれがベクトル < float >

次に、big_vector の要素を変更したいと思いました。一部の要素については、最初にサイズを変更する必要があります (例: 0 から 300)。

big_vector[i].resize(new_size);

プログラムを実行すると、最初はうまくいきましたが、いくつかの変更を加えた後、上記の行で「セグメンテーション違反」が発生しました。

4

3 に答える 3

5

最初に、big_vector のサイズを変更して、サイズ変更するベクトルがいくつかあるようにする必要があります。

int total_vectors = 100;
big_vector.resize(total_vectors);
for(int i = 0; i < total_vectors; ++i)
     big_vector[i].resize(new_size);
于 2009-03-18T20:49:59.983 に答える
1

ベクトルのサイズを変更する必要があるのはなぜですか? 単純な push_back では不十分ですか? または、インデックスごとにいくつかの値を設定しますか?

インデックスで値を設定する場合は、 std::generate_n と std::back_inserter を使用することをお勧めします

于 2009-03-18T21:07:40.597 に答える
0

ベクトルのベクトルがあります。

(i の float のベクトル) にアクセスする前にbig_vector[i]、big_vector 自体のサイズを設定する必要があります。

于 2009-03-18T20:47:43.980 に答える