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
的声明移到循环外。
如果我猜错了您没有向我们展示的代码结构,请按照我在上面链接的指南进行操作。
所以我对编码还很陌生,在使用 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
的声明移到循环外。
如果我猜错了您没有向我们展示的代码结构,请按照我在上面链接的指南进行操作。