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

问题描述 投票:1回答:1

我正在尝试创建一个计算乘法持久性的应用程序,就像在这个视频中: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);
    }
}

我期望每次都清除矢量,以便将新的数字组移动到矢量中以进行相乘。

然而,前一组数字似乎仍然存在于向量中。

c++
1个回答
0
投票

谢谢各位的帮助。通过设置new_total = 1来解决我的问题的解决方案;在while循环的开头,这在new_value不断增加之前是有意义的。

谢谢你的帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.