c++ - 清除 multi_index_container

标签 c++ boost boost-multi-index

我的代码(不是我的代码)中有一个使用 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 行的错误!!!

最佳答案

另外,你可以考虑

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

关于c++ - 清除 multi_index_container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14181893/

相关文章:

c++ - 从 type_id_with_cv<>()::pretty_name() 移除命名空间

c++ - Boost.Asio: socket::close 不取消 aysnc_read_some

c++ - 为什么 boost-multi-index 会返回一个错误的迭代器?

C++ HTTP/HTML 套接字问题

C++ 如何打印和(访问) vector 元组(在 map 中)?

c++ - 从 C++ 调用的 Fortran 子例程的错误值

c++ - 我应该使用 const &iterator,还是只使用迭代器?

c++ - 数组大小元函数 - 它在某处 boost 吗?

c++ - 用于在 boost 多索引的序列索引中插入的匹配函数