我有一对迭代器:
pair <multimap<CFile,Filetype>::iterator, multimap<CFile,Filetype>::iterator> range;
range = m_DirectoryMap.equal_range(obj);
该对在MultiMap中保存重复的元素 - 例如有1个对象有2个重复(所以基本上是3个对象),我需要删除其中的2个,所以只留下1个。
我是通过简单的while循环来完成的,如下所示:
auto it = range.first;
++it;
while (it != range.second)
it = m_DirectoryMap.erase(it);
之后,只剩下一个物体 - 这是我的目标。 后来我发现我应该尝试通过1个函数调用擦除整个对,并且不应该有任何循环需求,如下所示:
m_DirectoryMap.erase(range.first, range.second);
这似乎更清晰,但问题是它会删除所有对象。
然后我尝试了:
m_DirectoryMap.erase(++range.first, range.second);
这似乎留下了第一个对象,并删除了其余部分,所以它对我有用,但我的问题是 - 这是正确的方法,我正在寻找什么?