3

私のコード(私のコードではない)に、boostmulti_index_containerを使用するクラスがあります

template <class T_key, class T_val>
class foo_map {
  typedef MapEntry_T<T_key, T_val> MapEntry;

  typedef multi_index_container
  < MapEntry
  , indexed_by
  < sequenced< tag<by_LRU> >
  , ordered_unique
  < tag<by_index>
  , member<MapEntry, T_key, &MapEntry::first>
  >
  >
  > MapTable;
  typedef typename MapTable::template index<by_index>::type::iterator IndexIter;

  MapTable theMap;

public:
  typedef IndexIter iterator;
  void erase(iterator iter) {
    theMap.get<by_index>().erase(iter);
  }

};

すべての変数と型が適切に定義されていると仮定します。スニペットを台無しにしたくありません。コードは実際に機能します。私がやりたいのは、clearすべての要素を消去する関数を追加することです。

  void erase(iterator iter) {
    for (iter = theMap.begin(); iter != theMap.end(); iter++ )
      theMap.get<by_index>().erase(iter);
  }

誰かが助けることができますか?これに関して100行のエラーが発生します!!!

4

2 に答える 2

6

また、あなたは考えることができます

theMap.get<by_index>().clear();
于 2013-01-06T12:28:04.977 に答える
2

コードの代わりに標準のSTLトリックを試してください。

MapTable().swap(theMap);
于 2013-01-06T12:09:54.857 に答える