我们可以在创建它们时为std::map
或std::list
做一个mem_set()
。对于恩,mem_set为std :: map或std :: list
typedef std::map<int, double> MY_MAP;
typedef std::list<int> MY_LIST;
MY_MAP *map_obj = new MY_MAP();
mem_set(map_obj, 0, sizeof(MY_MAP));
MY_LIST mylist;
mem_set(&mylist, 0, sizeof(MY_LIST));
和我继续正常STL操作
map_obj->insert(std::make_pair<int, double> (1, 2.2));
mylist.push_back(1);
是否正确执行mem_set()
,如果它是正确的,我能为其他STL C++容器做同样喜欢std::vector
,std::set
etc
如果我们做一个mem_set()
内部stl容器会发生什么?
试图将新地图或列表的内容清零是没有意义的,因为它们没有任何内容。 –
'mem_set'?你的意思是'memset'? – aschepler
我建议不要这样做(请参阅'未定义的行为'评论)。删除'new's和'memset's,你的代码应该没问题。你可能不想首先使用'MY_MAP :: insert',只是'operator []' –