我无法解决这个问题,我几乎接受了这一事实,这可能是我的机器存在内存问题。
我有这个初始化器:
Search::Search(ifstream& inFile)
{
int id = 0;
int i = 0;
inFile >> id;
while (inFile) {
if(i < SEARCH_DATA_SIZE) {
SearchDataFirst[i] = id;
SearchDataFirstSorted[i] = id;
} else if(i >= SEARCH_DATA_SIZE) {
SearchDataLast[i] = id;
SearchDataLastSorted[i] = id;
}
i++;
inFile >> id;
}
}
在我的 header 中,我有如下私有(private)数据:
初始值设定项是从inFile获取前20个int,将其存储,然后转到下一个记录并将它们存储在单独的数组中,
当我打印数组时,SearchDataFirstSorted具有SearchDataLast的值,即使没有可能发生这种情况的方式也是如此。 SearchDataLastSorted具有奇怪的时髦数字。
SearchedDataFirst很好。
我从未对编程语言感到沮丧。
希望您能提供帮助。
没有其他事情发生,此时仅调用初始化程序。
最佳答案
问题是,如果i >= SEARCH_DATA_SIZE
,则SearchDataLast[i]
指向SearchDataLast
之外!您真正需要的是这样的东西:
for(int i = 0; i < SEARCH_DATA_SIZE; ++i)
{
inFile >> id;
SearchDataFirst[i] = id;
SearchDataFirstSorted[i] = id;
}
for(int i = 0; i < SEARCH_DATA_SIZE; ++i)
{
inFile >> id;
SearchDataLast[i] = id;
SearchDataLastSorted[i] = id;
}
也就是说,您需要在完成
i
的填充之后和开始填充SearchDataFirst
的操作之前将SearchDataLast
重置为零。