gpt4 book ai didi

c++ - 在抛出 'std::bad_alloc' what(): std::bad_alloc 实例后调用终止

转载 作者:行者123 更新时间:2023-11-28 05:06:55 24 4
gpt4 key购买 nike

这个错误的原因是什么?其实我不想受到之前测试用例结果的影响所以在测试用例开始时,我清空了队列以便每个测试用例都可以重新开始。 "

#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;
}

}
}

最佳答案

问题出在行上,

swap(first, empty);
swap(second, empty);

当调用第一个交换时,'empty' 变为 'first'(并且 'first' 变为 'empty')。现在,当调用第二个交换时,empty 不再是空的(它有'first')。

为了解决这个问题,一种解决方案可能是,

first = queue<int> ();
second = queue<int> ();

清空队列。

另一种解决方案是编写,

first = empty;
second = empty;

关于c++ - 在抛出 'std::bad_alloc' what(): std::bad_alloc 实例后调用终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44491311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com