複製:
私はmap1<string,vector<string>>
このマップ「itr」のイテレータを持っているマップを持っています。「itr」が指すこのマップからエントリを削除したい。関数 map1.erase(itr); を使用できます。この行の後、イテレータ「itr」は無効になります。私のプロジェクトの要件に従って、イテレータは次の要素を指す必要があります。事前にこれを再確認するのを手伝ってくれる人はいますか:) santhosh
私はmap1<string,vector<string>>
このマップ「itr」のイテレータを持っているマップを持っています。「itr」が指すこのマップからエントリを削除したい。関数 map1.erase(itr); を使用できます。この行の後、イテレータ「itr」は無効になります。私のプロジェクトの要件に従って、イテレータは次の要素を指す必要があります。事前にこれを再確認するのを手伝ってくれる人はいますか:) santhosh
map<...>::iterator tmp(iter++);
map1.erase(tmp);
簡単な答え:
map.erase(iter++); // Post increment. Increments iterator,
// returns previous value for use in erase method
前に質問と回答:
最初から最後まで繰り返しながらマップ要素でeraseを呼び出すと
どうなりますかstdmapからアイテムをフィルタリングする方法
#include <boost/next_prior.hpp>
map<string,vector<string> >::iterator next = boost::next(itr);
map1.erase(iter);
iter = next;