所以我对编码还很陌生,并且在使用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循环中。代码执行得很好,问题是当我提示用户添加一个新值时,该值未存储在向量中。因此,当用户选择打印数字时,列表仍显示为空。
答案 0 :(得分:0)
因此,您在这里缺少代码中最相关的部分。您确实应该发布minimal, reproducible example。创建一个对象的过程通常会导致您发现问题。
在这种情况下,很明显。有一个循环包装所有这些代码。 vector
在循环内声明。这意味着,在循环的底部vector
将被销毁,然后在再次执行循环时,将创建一个新的空vector
。
解决方案是将vector
的声明移出循环。
如果我对未显示给我们的代码结构有误,请按照我上面链接的指南进行操作。