Мое требование состоит в том, чтобы удалить «значение» из мультикарты, а не «ключ». Ключ может иметь несколько значений, и i
нужно удалить конкретное значение. Мое требование аналогично удалению узла из связанного списка.
Я делаю это, используя метод multimap::erase()
. Но после удаления, если я попытаюсь распечатать значения мультикарты, значения, удаленные с помощью multimap::erase()
, также будут напечатаны.
ниже мой фрагмент кода:
void Clientqueues::clearSubscription(string name,string sessionid)
{
pair<multimap<string,string>::iterator,multimap<string,string>::iterator> i;
multimap<string, string>::iterator j;
i = registeredClientInfo.equal_range(name);
if (j == registeredClientInfo.end())
return;
for(j=i.first;j != i.second;++j)
{
if((j->second) == sessionid) registeredClientInfo.erase(j->second);
}
for(j=i.first;j != i.second;++j)
{
cout<<""<<j->second<<endl;///This prints the erased values too;
}
}
Я делаю что-то неправильно? Любая помощь в этом отношении очень ценится.