我试过环顾四周,但我在任何地方找不到任何相关内容。
我正在编写一个带有“push”函数的自定义数组类,用于向数组添加值。 它似乎工作得很好,但不会执行多次。
以下面的主要方法为例:
int main()
{
Array<int> test(4,5);
test.push(4);
test.writeOrdered("Output.txt");
return 0;
}
这会将int值4放在第一个可用位置的数组中并执行writeOrdered函数。
另一方面,以下主要方法:
int main()
{
Array<int> test(4,5);
test.push(4);
test.push(5);
test.writeOrdered("Output.txt");
return 0;
}
这会将数字4放在第一个可用点的数组中,然后停止。它不会执行任何进一步的代码行。
以下是push
函数供参考:
void push(Datatype p_item)
{
bool inserted = false;
int i = 0;
while (inserted == false)
{
if (m_array[i] < 0)
{
m_array[i] = p_item;
i++;
inserted = true;
cout << p_item << " saved to array" << endl;
system("pause");
}
}
}
答案 0 :(得分:4)
你有一个无限循环。第一次插入后m_array[0] >= 0
和i
永远不会增长。如果你以某种方式调试了代码,你会发现它。
答案 1 :(得分:0)
基本上我不理解你的推送功能,但是它的方式是,在你将非负值插入第一个位置之后,任何进一步调用你的推送功能都会导致一个紧凑的循环。
我想你想要if语句之外的i ++。
答案 2 :(得分:0)
如果没有看到Array类的完整实现,我猜测数组m_array
默认包含负数。这将允许第一次调用push方法成功。对方法的下一次调用在索引0处包含值4,并且将陷入无限循环,因为inserted
永远不会设置为true,i
的值也不会增加。