我需要将multimap转换为void缓冲区,并将其传递到一个函数中,该函数应重构multimap。
我知道有一种简单的方法可以直接传递multimap,但我需要通过void指针来实现,请看下面我的逻辑:
using namespace std;
void reconstruct_mm(void *ptr, size_t len) {
multimap<int, int> *mm = ptr;
mm = (multimap<<int, int>*>malloc(len));
*** print the following 10, 20, 30...
}
int main (void) {
void *buffer;
size_t buffer_len = 0;
multimap <int, int> m;
// fill in multimap with values
m.insert(pair <int, int> (1, 10);
m.insert(pair <int, int> (2, 20);
m.insert(pair <int, int> (3, 30);
// from this point I need your help, I only wrote logic what I expect from the program.
buffer = &mm;
buffer_len = sizeof(mm);
reconstruct_mm(buffer, buffer_len);
}
谢谢您的提前感谢!
malloc()
?它不会构造你的multimap
。 - Fred Larsonnew multimap<int,int>()
,这只是创建了一个新的对象。你为什么要分配一个新的map?你是想复制它吗?还是只想打印出它的值? - ChrisMMnew
是正确的方法。 - Fred Larsonstd::multimap
,然后打印它的sizeof
。然后加载它并再次尝试sizeof
。它会改变吗? - Fred Larson