无法收集用户输入并将其存储在向量中

时间:2019-04-02 19:12:07

标签: visual-c++ vector runtime-error sentinel

有人告诉我,我可以使用一个向量来保存用户输入,而不是使用数组。使用向量的好处是不必声明向量将具有的元素数,并且如果向已满的向量添加值,向量将自动增加其大小。我还希望哨兵退出输入循环。但是,当我尝试实现此功能时,会出现运行时错误。

我认为错误出在第14行或第17行。

错误消息是

调试断言失败

程序: C:\ Users \ Grayson \ source \ repos \ AddUp.exe File:d:program files \ vc \ tools \ msvc \ 14.16.27023 \ include \ vector 1733行

表达式:向量下标超出范围

有关程序如何引起断言的信息 失败,请参见有关断言的Visual C ++文档。

我的代码:

#include <iostream>
#include <vector>

使用命名空间标准;

int main()
{
    vector<int>userIn;
    int numElements;
    int index=0;
cout << "Enter your inputs. Enter -1 to quit." << endl;
    while (userIn[index] != -1)
    {
        cout << "Input index #" << index << ": " << endl;
        cin >> userIn[index];
        index++;
    }
cout << "done";

return 0;

}

1 个答案:

答案 0 :(得分:0)

您正在尝试添加元素以错误的方式进行引导。 正确的方法是使用“ push_back”

#include <iostream>
#include <vector>

using namespace std;

int main()
{
        vector<int>userIn;
        int elem;
        int index = 0;

        cout << "Enter your inputs. Enter -1 to quit." << endl;

        while (true)
        {
                cout << "Input index #" << index << ": ";
                cin >> elem;

                if (elem != -1)
                {
                        userIn.push_back(elem);
                        index++;
                }
                else
                {
                        break;
                }
        }

        cout << "done";

        return 0;
}