c++ queue 使用的问题
想使用queue的数组queue<int>q[20]。。。这样定义好像有问题。。尝试了queue<int>*q[20];for(inti=0;i<20;i++)q[i]=...
想使用queue的数组
queue <int> q[20]。。。这样定义好像有问题。。
尝试了
queue<int> * q[20];
for(int i=0; i<20;i++)
q[i] = (queue <int> *) malloc(sizeof(queue<int>)*20); //每个队列我只要20个大小。。
这样在入队的时候发生错误:pat_practise.exe 中的 0x77ea15ee 处有未经处理的异常: 0xC0000005: 读取位置 0xcdcdcdd1 时发生访问冲突
求大神指点。。 展开
queue <int> q[20]。。。这样定义好像有问题。。
尝试了
queue<int> * q[20];
for(int i=0; i<20;i++)
q[i] = (queue <int> *) malloc(sizeof(queue<int>)*20); //每个队列我只要20个大小。。
这样在入队的时候发生错误:pat_practise.exe 中的 0x77ea15ee 处有未经处理的异常: 0xC0000005: 读取位置 0xcdcdcdd1 时发生访问冲突
求大神指点。。 展开
展开全部
void main()
{
queue<int> * q[20];
for(int i=0; i<20;i++)
{
q[i] = new queue<int>;
}
q[0]->push(2) ;
int a = 3 ;
}
你想让队列限定在20个是不可能的,而且没有必要,它都是动态增长的,并不是一下申请100M内存
q[i] = (queue <int> *) malloc(sizeof(queue<int>)*20);
写这个问题太多了
首先q是一个指针数组
你想做的是对q里面的每一个指针变量赋值,把malloc的内存强制转化为(queue <int> *) ,这个是正确的,后面是什么意思呢,你每个队列只想要20个大小,暂且不说你这个不能实现即时能实现
sizeof(queue<int>)*20这相当于20个queue<int>的大小,这个是你的本意吗,我感觉不是吧,你想要20个int大小吧
展开全部
1、queue <int> q[20];
定义是不会有问题的。
2、queue<int> * q[20];
sizeof(queue<int>)不是只单个队列大小,队列本来就是一个可变容器,按sizeof申请内存肯定会报内存错误。
正确申请方法:
queue<int> * q[20];
for(int i=0; i<20;i++)
q[i] = new queue<int>;
不要试图在申请的时候使用sizeof*N指定整个队列的大小,队列是容器,本身就是弹性的,你使用多少就多少,可以通过size方法获取队列的大小。
希望可以帮助到你!
定义是不会有问题的。
2、queue<int> * q[20];
sizeof(queue<int>)不是只单个队列大小,队列本来就是一个可变容器,按sizeof申请内存肯定会报内存错误。
正确申请方法:
queue<int> * q[20];
for(int i=0; i<20;i++)
q[i] = new queue<int>;
不要试图在申请的时候使用sizeof*N指定整个队列的大小,队列是容器,本身就是弹性的,你使用多少就多少,可以通过size方法获取队列的大小。
希望可以帮助到你!
追问
我后来用q[20][20]解决了,因为我每个队的最大长度不超过20。。谢谢你
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
std::queue<int> qTest[10];定义没有问题哦
对于类的对象,建议用new而不是malloc
对于类的对象,建议用new而不是malloc
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询