【发布时间】:2021-03-16 01:11:55
【问题描述】:
处理接收数组及其大小 (n) 并返回包含任何缺失整数的数组/更新大小参数的函数...我使用的数组是 {3, 1, 3, 0, 6, 4}, n = 6。我创建了一个临时数组以在各种索引处递增....因此,任何索引 = 0 都将等同于缺少的变量。我不断收到“使用未初始化的内存 'temp'”警告,屏幕上没有任何内容......您可以提供的任何帮助将不胜感激......
int* findMissing(int arr[], int n, int& resArrSize) {
int* temp = new int[n + 1];
int count = 0;
for(int i = 0; i < n + 1; i++){
temp[arr[i]]++;
}
int* missingInts = new int[n + 1];
for (int i = 0; i < n + 1; i++) {
if (temp[i] == 0) {
missingInts[count] = temp[i];
count++;
}
}
delete[] temp;
resArrSize = count;
return missingInts;
}
【问题讨论】:
-
这里增加:
temp[arr[i]]++;但数组中的值尚未初始化。声明int* temp = new int[n + 1];没有将数组中的值设置为 0。 -
这是使用
std::vector<int>存储您的temp的一个很好的理由,它会正确地将成员初始化为零。