我的代码中有一个类(不是我的代码),它使用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行错误!!!
最佳答案
尝试使用标准的STL技巧而不是代码:
MapTable().swap(theMap);
关于c++ - 清除multi_index_container,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14181893/