我有一对迭代器:
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 个对象 - 这是我的目标。后来我发现我可能应该尝试通过 1 个函数调用来擦除整个对,并且应该不需要任何循环,如下所示:
m_DirectoryMap.erase(range.first, range.second);
这看起来更干净,但问题是它会删除所有对象。
然后我尝试了:
m_DirectoryMap.erase(++range.first, range.second);
这似乎留下了第一个对象并删除了其余的对象,所以它对我有用,但我的问题是 - 这是正确的方法吗,我在寻找什么?