我正在c++做一些练习。我正在尝试制作一个简单的游戏,需要用户不断输入矢量。
我试图重新初始化向量。我在while(1)
循环中使用过,也尝试过clear()
。
vector<int> user; // initialize vector
while (1)
{
for (int guess; cin >> guess;)// looping
{ // user input
user.push_back(guess);
}
if (user.size() != 4) // check if user put exactly 4 numbers
{
cerr << "Invalid input";
return 1;
}
//... // doing some stuff with "int bulls"
if (bulls == 4)
{
break;
}
} // now need to go back with emty vector, so that the user can input guesses again
在我的终端中,它永远循环运行,或者在我输入无效输入的条件下停止运行。
答案 0 :(得分:2)
由于
,您有一个无限循环for(int guess; cin >> guess;)
您push_back
向用户引导的位置,直到std::cin
失败。
您可能希望输入4
个用户。如果是这样,请尝试以下操作,通过该操作,您无需清除向量,因为在每个while
循环中都可以创建一个新向量。
while (true)
{
std::vector<int> user;
user.reserve(4); // reserve memory which helps not to have unwanted reallocations
int guess;
while(cin >> guess && user.size() != 4)
user.emplace_back(guess);
// doing some stuff with "int bulls"
if (bulls == 4) {
break;
}
}