В настоящее время ваш цикл for на самом деле не имеет смысла, поскольку сразу после добавления чего-либо в очередь вы также выталкиваете любой элемент, находящийся впереди, теряя его навсегда, поскольку вы никогда не сохраняете его где-либо еще.
Я предполагаю, что вы пытаетесь сделать здесь, найти машину, которая была вставлена в стек, и удалить ее.Если это так, то сделайте что-то вроде следующего:
string departingcar = v.license;
//find and remove the license plate from the stack
for(int i=0; i<stack.size(); i++)
{
if (departingcar != stack.top())
{
q.push(stack.top());
stack.pop();
}
else
{
stack.pop();
break;
}
}
//put the remaining cars back in the stack and empty out the queue
while(!q.empty())
{
stack.push(q.front());
q.pop();
}
Итак, в основном здесь происходит добавление автомобилей в очередь, которые не равны номерному знаку уходящего автомобиля.Если мы сталкиваемся с номерным знаком автомобиля, который мы хотим удалить, то мы просто не добавляем его в очередь, но удаляем его из стека и выходим из цикла for, поскольку нашли наш автомобиль.Затем мы просто опустошаем очередь, выталкивая машины, которые ранее вынули из стека, обратно в стек.