C ++函数不会执行多次

时间:2014-03-05 15:26:31

标签: c++ arrays function

我试过环顾四周,但我在任何地方找不到任何相关内容。

我正在编写一个带有“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");
        }
    }
}

3 个答案:

答案 0 :(得分:4)

你有一个无限循环。第一次插入后m_array[0] >= 0i永远不会增长。如果你以某种方式调试了代码,你会发现它。

答案 1 :(得分:0)

基本上我不理解你的推送功能,但是它的方式是,在你将非负值插入第一个位置之后,任何进一步调用你的推送功能都会导致一个紧凑的循环。

我想你想要if语句之外的i ++。

答案 2 :(得分:0)

如果没有看到Array类的完整实现,我猜测数组m_array默认包含负数。这将允许第一次调用push方法成功。对方法的下一次调用在索引0处包含值4,并且将陷入无限循环,因为inserted永远不会设置为true,i的值也不会增加。