очистка multi_index_container

В моем коде есть класс (не мой код), который использует boost multi_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 строк по этому поводу !!!

2

Решение

Попробуйте стандартный трюк STL вместо вашего кода:

MapTable().swap(theMap);
2

Другие решения

Кроме того, вы могли бы рассмотреть

theMap.get<by_index>().clear();
4

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector