我创建了一个程序,它将从队列中删除输入号码的每个实例,但无法弄清楚如何修改它,以便它只会删除所述号码的第一个实例。从队列中删除特定号码的第一个实例
这是我的计划,截至目前:
#include <iostream>
#include <list>
#include <stack>
#include <queue>
using namespace std;
int main(){
queue<int> q;
int size;
cout << "Enter the size of the queue: ";
cin >> size;
int val;
for (int i = 0; i < size; i++){
cout << "Enter a value to insert into the queue: ";
cin >> val;
q.push(val);
}
int value;
bool found = false;
queue<int> temp;
queue<int> printQueue;
cout << "Which value would you like to remove: ";
cin >> value;
while (!q.empty()){
if (q.front() == value)
q.pop();
else{
temp.push(q.front());
q.pop();
}
}
q = temp;
printQueue = q;
while (!printQueue.empty()){
cout << printQueue.front() << " ";
printQueue.pop();
}
}
我将如何修改呢?我正在考虑在while循环中放置一个bool值来删除所有内容,但是一旦它找到一个而不是完成将其他队列复制到临时目录的时候它就会被踢出去。
任何帮助将是伟大的。
每当你删除一个元素时,尽早退出'while(!q.empty())'循环。然后添加另一个循环来将剩余的元素从'q'传递给'temp'。你应该考虑使用更合适的容器。 –
为了一个测试学习,所以要学习这一个!但是,谢谢,会尝试 –