为什么vector.clear()不能在循环中工作?

时间:2019-04-05 08:16:13

标签: c++

我正在尝试创建一个用于计算乘法持久性的应用程序,例如此视频:https://youtu.be/Wim9WJeDTHQ?t=197

但是我的问题是,在while循环的迭代过程中似乎没有清除我的向量。这意味着产生的输出呈指数增长,而不是降低到0。

我对使用c ++进行编码非常陌生,因此希望您能提供反馈。

std::vector<int> per;
int input;
int result;
int new_total = 1;
int loop_total;

std::cin >> input;

//Moving the user input into a vector

while (input > 0)
{
    result = input % 10;
    input = input / 10;

    per.push_back(result);
}

//loops to multiply new sets of numbers together until "new_total" is 0

while (new_total > 0) {

    for (int i = per.size() - 1; i >= 0; i--)
    {
        new_total = new_total * per[i];
    }

    per.clear();

    std::cout << "\n" << new_total << "\n";

    loop_total = new_total;

    while (loop_total > 0)
    {
        result = loop_total % 10;
        loop_total = loop_total / 10;

        per.push_back(result);
    }
}

我希望每次都会清除向量,以便将新的数字集移动到要相乘的向量中。

但是,向量中以前的数字似乎仍然存在。

1 个答案:

答案 0 :(得分:0)

感谢大家的帮助。我的问题的解决方法是通过设置new_total = 1来解决的;在while循环的开始,这与将new_value不断地乘以之前一样有意义。

感谢所有帮助:)