如何从boost :: intrusive集合容器中分离元素

Rav*_*ugu 4 boost boost-intrusive

我试图从boost :: intrusive集中分离元素并获得断言失败.当我从容器中分离后删除元素时.

该类派生自set_base_hook.

class fileXfer:public set_base_hook> 70 {

我正在使用"擦除"功能将对象从容器中分离出来.当我尝试删除对象时,我得到断言失败.断言失败发生在下面的位置.

/usr/local/include/boost/intrusive/detail/utilities.hpp:344:void boost :: intrusive :: detail :: destructor_impl(Hook&,boost :: intrusive :: detail :: link_dispatch <(boost :: intrusive: :link_mode_type)1u>)[with Hook = boost :: intrusive :: detail :: generic_hook,boost :: intrusive :: default_tag,(boost :: intrusive :: link_mode_type)1u,3>]:断言`!hook.is_linked ()'失败了.中止(核心倾倒)

当我看到错误的位置时,我看到了这个命令.

341 {//如果这个断言引发,你可能已经销毁了一个对象342 //,当它仍然插入一个活着的容器中时.343 //如果是这样,请在销毁之前从容器中删除该对象.344(无效)钩; BOOST_INTRUSIVE_SAFE_HOOK_DESTRUCTOR_ASSERT(hook.is_linked()!); 345}

请指教

Rav*_*ugu 5

经过大量的谷歌搜索,我得到了解决.应使用erase(Classname :: s_iterator_to(value))代替"erase(value)".