我已经阅读了很多内容,但却找不到任何答案。我有一个多图,其中包含<Class object, enum class>
对并使用std::multimap.equal_range()
我正在获取其中所有重复键的范围。下一步是我要删除除了其中一个重复项之外的所有重复项。我的下面的代码删除了所有这些代码,没有给出具有给定键的对。无论如何,我可以简单地删除除了其中一个之外的其他所有人吗?
void removeDuplicates( const string& strToRemove ) {
CFile obj (strToRemove, 0);
pair <multimap<CFile,Filetype>::iterator, multimap<CFile,Filetype>::iterator> ret;
ret = m_DirectoryMap.equal_range(obj);
for (multimap<CFile,Filetype>::iterator it=ret.first; it!=ret.second; ++it) {
it = m_DirectoryMap.erase(it);
}
}
就像我提到的,如果我有3对具有相同键的代码,则使用以下代码,它们都被删除了。我想删除 n-1 重复项,而不是 n 。
答案 0 :(得分:0)
it
后it=mymap.erase(it)
增加auto it=ret.first;
if (it!=ret.second)
{
++it;
while (it!=ret.second)
it=mymap.erase(it);
}
并不适合我。
你应该这样做
embeds_in :character_classes