大きなデータセットの距離行列を作成し、十分に近い要素のみを保存したいと考えています。コードは次のようになります。C++でベクトル配列を作成
vector<double> * D;
D = (vector<double> *) malloc(dim *sizeof(vector<double>)) ;
for(i=0;i<dim;i++){
for(j=i+1;j<dim;j++){
dx = s[j][0] - s[i][0];
dy = s[j][1] - s[i][1];
d = sqrt(dx*dx + dy*dy);
if(d < MAX_DISTANCE){
D[i].push_back(d);
D[j].push_back(d);
}
}
これは私にセグメンテーションフォルトを与えます。私は正しくベクトルの配列を定義していないと思います。これをどうやって回避するのですか?
C++で 'malloc'を使用しないでください。 – songyuanyao
ベクトルのベクトルを作ることができるときに、なぜベクトルの配列を作るのですか? – Galik
単一の 'std :: vector'を使い、そのサイズを 'width * height'にしてください。 –
Simple