如何在while循环中重新初始化向量?
Posted
技术标签:
【中文标题】如何在while循环中重新初始化向量?【英文标题】:How to re-initialize a vector in a while-loop? 【发布时间】:2019-06-01 10:48:36 【问题描述】:我正在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
在我的终端中,它一直在循环,或者在我输入无效输入的情况下停止。
【问题讨论】:
如果您想在读取输入之前清除它,请在 while 之后立即清除它。 【参考方案1】:你有一个无限循环,因为
for(int guess; cin >> guess;)
你在哪里 push_back
到 user 向量直到 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;
【讨论】:
以上是关于如何在while循环中重新初始化向量?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中的另一个 while 循环中正确地创建一个 while 循环?