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