这个错误的原因是什么?实际上我不想受到之前测试用例结果的影响所以在测试用例开始时,我清空了队列,以便每个测试用例都可以重新开始。 "
#include <iostream>
#include <queue>
using namespace std;
int main()
{
queue <int> first;
queue <int> empty;
queue <int> second;
int i,j,k,l,n,m,a,p,q;
int test,t;
std::cin>>test;
t=test;
while(test--)
{
swap(first,empty);
swap(second,empty);
std::cin>>n>>m;
a=2*n;
for(i=1;i<=a;i++)
{
first.push(i);
}
for(i=a+1;i<=m;i++)
{
second.push(i);
}
for(i=1;i<=a;i++)
{
p=second.front();
second.pop();
cout<<p;
q=first.front();
first.pop();
cout<<q;
}
}
}
答案 0 :(得分:1)
这里的问题在于,
swap(first, empty);
swap(second, empty);
调用第一个交换时,“空”&#39;得到第一个&#39; (并且&#39;首先&#39;变得空虚&#39;)。现在,当调用第二个交换时,空的不再是空的(它已经是第一个&#39;)。
要解决这个问题, 一种解决方案可能是,
first = queue<int> ();
second = queue<int> ();
清空队列。
另一种解决方案可能是写,
first = empty;
second = empty;