私はダブルスの2DベクトルからなるC++クラスを扱っています。私は2Dベクトルを作成しようとしていますが、その内部の値を編集しようとするとプログラムがクラッシュします。私は[] []演算子を使用してmyDubと等しく設定しようとしましたが、私はmyMat.editSlot(i、j、myDub)のようなクラスを使用しようとしましたが、どちらもプログラムをクラッシュさせました。ダブルスの2Dベクトルがクラッシュの原因となる
// N == rowsとcolsの#(すべての行列が正方形である) // INFILEが正しく
mat my_mat(n,n);
// Read input data
for (int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
double myDub;
inFile >> myDub;
my_mat.editSlot(i,j,myDub);
}
}
ファイルを開き、ここでクラスです:
class mat
{
mat(int x , int y) {
int row = x;
int col = y;
vector<vector<double>> A(row , vector<double>(row , 0));
for (int i = 0; i<row; i++)
{
for (int j = 0; j<col; j++)
{
cout << setw(6) << A[i][j];
}
cout << endl;
}
}
void editSlot(int x , int y , double val) {
A[x][y] = val;
}
vector<vector<double>> A;
private:
int n;
};
私たちに表示するには、[最小限の完全で検証可能な例](http://stackoverflow.com/help/mcve)を作成してください。うまくいけば*ビルド*。 –
ああ、おそらくあなたがそれを持っている範囲で 'A'がどこで宣言されているか考えるべきでしょう。 *そして* '行!= col'(***ローカル変数***の初期化を考慮して' A')を行うとどうなりますか? –
多分、あなたは 'row'カラムの代わりに' col'カラムを持たせることを意図していたかもしれません。 –