c++ map中结构体指针
#include <iostream>
#include <queue>
#include<map>
#include <string>
#include <mutex>
//#include <Windows.h>
using namespace std;
map<int, RevData*> imap;
map<int, RevData*>* queue2;
//queue2 = (queue<RevData*>*)malloc(sizeof(queue<RevData*>));
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));
imap[i]=recvp;// recvp);
//imap[i]=&recvD;
}
queue2 = &imap;
for (int i = 0; i < 10; i++) {
RevData* recv = (*queue2)[i];
cout << (*recv).data << endl;
cout << (*recv).size << endl;
}
总结,如果map中插入结构体地址,遍历取出的一直是最后一个结构体,
当插入map中的结构体指针是分配过内存的,遍历取出的值则正常
文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/79371784
- 点赞
- 收藏
- 关注作者
评论(0)