我有一个float**
包含num_rows
行和num_cols
列的数组。我想确定 0-9 列之间每个数字的出现次数。为此,我想到了使用另一个 size 的二维数组[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];
知道我现在做错了什么吗?