行と列をfloat**
含む配列があります。0から9までのすべての数字の出現回数を列ごとに調べたいと思います。これを行うために、サイズの別の2D配列を使用することを考えました。これにより、各列の要素に対応する数は、元のテーブルでのその数の出現数になります。例:元のテーブルの5番目の列に含まれている場合、2番目の列の値は次のようになります。num_rows
num_cols
[10][num_cols]
1 2 3 1 1
1-> 3, 2 -> 1, 3 -> 1
次のように関数を使ってみましたが、ポインタエラーが発生します。ベクトルを使ってみましたが、それでもうまくいきません。
int ** attribute_count(float * * input, int row_num, int col_num) {
int ** arr_2 = new int * [10];
int * arr = new int[10 * col_num];
int counter = 0;
for (int i = 0; i < 9; i++) {
for (int j = 0; j < col_num; j++) {
arr_2[i][j] = 0;
}
}
for (int i = 0; i < 9; i++) {
for (int j = 0; j < col_num; j++) {
int temp = input[i][j];
arr_2[temp][j]++;
}
}
return arr_2;
}
編集:私はあなたの提案を試しました。新しいコードは次のとおりです。
int** attribute_count(float** input, int row_num, int col_num) {
int** arr_2 = new int* [10];
int* arr = new int[10 * col_num];
int counter = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < col_num; j++) {
arr_2[i] = new int[col_num];
}
}
for (int i = 0; i < 11; i++) {
for (int j = 0; j < col_num; j++) {
int temp = input[i][j];
arr_2[temp][j]++;
}
}
return arr_2;
}
これでもメモリエラーが発生します。この関数は、次のように.cppで呼び出されます。
int** attr = attribute_count(training_data, 10, num_cols_train);
cout<<attr[5][1];
私が今でも間違っていることについて何か考えはありますか?