C++ 向量 push_back 函数

C++ vector push_back function

所以我对编码还很陌生,在使用 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 循环。代码执行得很好,问题是当我提示用户添加一个新数字时,该值没有存储在向量中。所以当用户选择打印数字时,列表仍然显示为空。

因此,您在这里遗漏了代码中最相关的部分。你真的应该发布 minimal, reproducible example。通常创建一个的过程会让你发现你的问题。

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

解决方法是将 vector 的声明移到循环外。

如果我猜错了您没有向我们展示的代码结构,请按照我在上面链接的指南进行操作。