c++队列指针 结构体指针
RevData中如果放的是对象数据,不是char* int,可以用如下方式:
RevData *recvD =new RevData;
recvD.size = i;
strcpy(recvD.data, "hello");
queue1.push(recvD);// recvp);
如果是char*,就得用malloc:
-
struct RevData{
-
-
int size;
-
-
char data[1000];
-
-
} recv_data;
#include <iostream>
#include <queue>
#include<map>
#include <string>
#include <mutex>
//#include <Windows.h>
using namespace std;
queue<RevData*> queue1;
queue<RevData*>* queue2;
for (int i = 0; i < 10; i++) {
RevData recvD;
recvD.size = i;
strcpy(recvD.data, "hello");
RevData* recvp = (RevData*)malloc(sizeof(RevData));
memcpy(recvp, &recvD, sizeof(RevData));
queue1.push(recvp);
}
queue2 = &queue1;
for (int i = 0; i < 10; i++) {
RevData* recv = queue2->front();
cout << (*recv).data << endl;
int lenga = queue2->size();
queue2->pop();
int lenga2 = queue2->size();
cout << (*recv).size << endl;
}
结论,队列中使用结构体指针时,指针需要分配内存,否则队列里取出来的全是最后一个结构体。
文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/79371732
- 点赞
- 收藏
- 关注作者
评论(0)