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 时发生访问冲突

求大神指点。。
展开
 我来答
zoomscence
推荐于2016-02-27 · 超过22用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:31.5万
展开全部

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 ;

}

  1. 你想让队列限定在20个是不可能的,而且没有必要,它都是动态增长的,并不是一下申请100M内存

  2. q[i] = (queue <int>  *) malloc(sizeof(queue<int>)*20); 

    写这个问题太多了

    1. 首先q是一个指针数组

    2. 你想做的是对q里面的每一个指针变量赋值,把malloc的内存强制转化为(queue <int>  *) ,这个是正确的,后面是什么意思呢,你每个队列只想要20个大小,暂且不说你这个不能实现即时能实现

      sizeof(queue<int>)*20这相当于20个queue<int>的大小,这个是你的本意吗,我感觉不是吧,你想要20个int大小吧

Linyar
推荐于2018-03-30 · TA获得超过757个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:244万
展开全部
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方法获取队列的大小。

希望可以帮助到你!
追问
我后来用q[20][20]解决了,因为我每个队的最大长度不超过20。。谢谢你
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sciapex
2014-08-28 · 超过82用户采纳过TA的回答
知道小有建树答主
回答量:152
采纳率:77%
帮助的人:37.1万
展开全部
std::queue<int> qTest[10];定义没有问题哦
对于类的对象,建议用new而不是malloc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式