2016-03-16 86 views
0

尝试限制用户在手动将数组输入到1时可以插入到向量中的输入量,但由于某种原因,它很奇怪。限制向量中元素的数量

#include <iostream> 
using namespace std; 

void fillVector(vector<int>& newThisIsAVector) 
{ 
cout << "Please type in your 10 numbers separated by a space. On completion press enter."; 
int input; 
cin >> input; 

while (newThisIsAVector.size() < 10) 
{ 
    newThisIsAVector.push_back(input); 
    cin >> input; 
} 
cout << endl; 
} 

这应该是限制你在10,而是它采取10然后当你按下输入它会创建一个新的行。然后你输入第11个数字,然后再次输入。然后脚本工作并注册前10个数字,并执行其他命令,但前10个数字完全忽略不需要的第11个数字。 ;/

我该如何解决?

回答

4

在循环之前使用cin一次,并且在循环中重复使用10次。 1 + 10等于11,因此要求输入11次。要将输入的数量限制为10,您需要将调用限制为cin为10.

0

因为当您录制输入第10个元素时,矢量仍然有9个元素。所以在接下来的回合中,你会在向量中加入第10位并请求第11位。

如果你知道这将是10个元素输入,为什么不使用C++ 11 std :: array?