如何在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_backuser 向量直到 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循环中重新初始化向量?的主要内容,如果未能解决你的问题,请参考以下文章

在while循环中重新初始化数组[关闭]

while循

如何在 Python 中的另一个 while 循环中正确地创建一个 while 循环?

在MATLAB中如何实现一段while循环后,判断是不是符合条件,若不符合重新回到while?

4_while循环结构和break&continue

c语言中while的用法