【问题标题】:clear map of vector pointer in c++c++中矢量指针的清晰映射
【发布时间】:2016-06-15 14:48:46
【问题描述】:
map<string ,vector<void*>> mymap;

我试过了,

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

【问题讨论】:

  • vector&lt;void*&gt;?为什么?此外,当问题仅与 std::vector 相关时,std::map 与此有什么关系?
  • 呃,你为什么认为mymap.clear()没有清除你的地图?
  • @hurkyl :: 它是清算价值., 但地图持有一些地址
  • map will 仍然会指向一个空的向量,即使你清除了向量。你不想要一个空向量?
  • 我不明白你在问什么。您可以编辑您的问题以包含您想要的内容吗?

标签: c++ oop dictionary


【解决方案1】:

我不太明白这个问题,但如果你的意思是要删除vector&lt;void*&gt; 指向的对象,那么使用:

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

【讨论】:

  • @Mattia F. - 或delete [] address,而不是free(address),如果address 分配有new []
  • 好吧,我只是发布了一个例子,他可以用这个值做任何他想做的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多