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 ();