Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c+中向量指针的清晰映射+; map-mymap;_C++_Oop_Dictionary - Fatal编程技术网

C++ c+中向量指针的清晰映射+; map-mymap;

C++ c+中向量指针的清晰映射+; map-mymap;,c++,oop,dictionary,C++,Oop,Dictionary,我试着 map<string ,vector<void*>> mymap; std::map::iterator itr=mymap.begin(); std::vector::iterator it=(itr->second).begin(); 如果(it!=(itr->second.end()) { (itr->秒)。调整大小(0); (itr->秒)。收缩到适合(); } mymap.clear(); 我不太明白这个问题,但如果您的意思是要删除向量所指的对象,请使

我试着

map<string ,vector<void*>> mymap;
std::map::iterator itr=mymap.begin();
std::vector::iterator it=(itr->second).begin();
如果(it!=(itr->second.end())
{
(itr->秒)。调整大小(0);
(itr->秒)。收缩到适合();
}
mymap.clear();

我不太明白这个问题,但如果您的意思是要删除
向量所指的对象,请使用:

std::map<std::string, vector<void*>>::iterator itr = mymap.begin();

std::vector<void*> ::iterator it =(itr->second).begin();


if(it != (itr->second).end())
{
    (itr->second).resize(0);
    (itr->second).shrink_to_fit();
}


mymap.clear();

向量
?为什么?另外,
std::map
与此有什么关系,当问题完全与
std::vector
有关时?呃,为什么你认为
mymap.clear()
不会清除你的映射?@hurkyl::它是清除值,但是持有一些addressmap键的映射即使在你清除向量后仍会指向空向量。你不想要一个空向量?我不明白你在问什么。你能编辑你的问题以包含你想要的吗?@Mattia F.-或者
删除[]地址
,而不是
免费(地址)
,如果
地址
分配了
新[]
那么,我举了一个例子,他可以用这个值做任何他想做的事情。
for (const auto& v : mymap) //for each value in the map
    for (const auto& address: v.second) //for each element in the vector
        delete address;
mymap.clear ();