C ++向量push_back函数

时间:2019-10-28 04:49:09

标签: c++ vector push-back

所以我对编码还很陌生,并且在使用push_back函数将用户输入存储到向量中时遇到一些问题。有人可以告诉我我在做什么错吗?

  vector<int> user_nums;

     switch(selection){
        case 'P':
        case 'p':
            if(user_nums.empty()){
                cout << "[]- list is empty" << endl;
            }else{
                for(auto nums: user_nums)
                    cout <<"[ " << nums << " ]" << endl;
            }
            break;
        case 'A':
        case 'a':
            int new_num;
            cout << "\nEnter a number you would like to add: ";
            cin >> new_num;
             user_nums.push_back(new_num);
            cout << new_num << " was added" << endl;
            break;

这是在do while循环中。代码执行得很好,问题是当我提示用户添加一个新值时,该值未存储在向量中。因此,当用户选择打印数字时,列表仍显示为空。

1 个答案:

答案 0 :(得分:0)

因此,您在这里缺少代码中最相关的部分。您确实应该发布minimal, reproducible example。创建一个对象的过程通常会导致您发现问题。

在这种情况下,很明显。有一个循环包装所有这些代码。 vector在循环内声明。这意味着,在循环的底部vector将被销毁,然后在再次执行循环时,将创建一个新的空vector

解决方案是将vector的声明移出循环。

如果我对未显示给我们的代码结构有误,请按照我上面链接的指南进行操作。