gpt4 book ai didi

c++ - 初始化器正在覆盖第二个数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:50 25 4
gpt4 key购买 nike

我无法解决这个问题,我几乎可以接受这可能是我机器内存问题的事实。

我有这个初始化程序:

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;
}

}

在我的标题中我有这样的私有(private)数据:

const int SEARCH_DATA_SIZE = 20;

int SearchDataFirst[SEARCH_DATA_SIZE];
int SearchDataLast[SEARCH_DATA_SIZE];
int SearchDataFirstSorted[SEARCH_DATA_SIZE];
int SearchDataLastSorted[SEARCH_DATA_SIZE];

初始化器从 inFile 中获取前 20 个整数,存储它们,然后转到下一条记录并将它们存储在单独的数组中,

当我打印数组时,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;
}

也就是说,在完成填充 SearchDataFirst 之后和开始填充 SearchDataLast 之前,您需要将 i 重置回零。

关于c++ - 初始化器正在覆盖第二个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8373474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com