私の要件は、「キー」ではなくマルチマップから「値」を削除することです。 キーは複数の値を持ち、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;
}
}
私が何か間違ったことをやっていますか? この点に関するお手伝いが大変ありがとうございます。
ありがとう、これは私のために働いた。 – user1081481