【发布时间】:2014-07-18 08:00:13
【问题描述】:
我在使用 C++ 以及地图和交叉路口时遇到问题。
有 3 张地图,前两张是 map<int, double>,最后一张是 map<int, CustomType>。
我想从前 2 个映射中删除所有映射键实例,这些实例在第三个映射中不作为键存在。简而言之,我有第三张地图,其中包含对象列表,前两张地图包含有关对象的一些数据。在某个时间点,包含对象的地图被清理并删除了一些项目(用户交互),现在想要分别清理其他两个地图。
我尝试了以下方法:
map<int, double> map1, map2;
map<int, CustomType> map3;
for (auto it = map1.cbegin(); it != map1.cend(); )
{
if ( map3.find(it->first) == map3.end() )
{
map2.erase(it);
map1.erase(it++);
}
else ++it;
}
这在 map1.erase 行上给我一个错误“未分配指针被释放”。我研究了 set_intersection 但我不相信它在这种情况下会起作用,因为值会有所不同。
感谢任何帮助。
【问题讨论】:
标签: c++ c++11 map intersection