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

如何从boost::intrusive set容器中分离元素,boost,boost-intrusive,Boost,Boost Intrusive,我正试图从boost::intrusive集合中分离元素,并导致断言失败。 从容器中拆下元素后删除该元素时 该类派生自set_base_hook 类fileXfer:public set\u base\u hook> 七十{ 我正在使用“擦除”功能从容器中分离对象。当我尝试删除对象时,我得到断言失败。断言失败发生在下面的位置 /usr/local/include/boost/intrusive/detail/utilities.hpp:344:void boost::intrusive::des

我正试图从boost::intrusive集合中分离元素,并导致断言失败。 从容器中拆下元素后删除该元素时

该类派生自set_base_hook

类fileXfer:public set\u base\u hook> 七十{

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

/usr/local/include/boost/intrusive/detail/utilities.hpp:344:void boost::intrusive::destructor_impl(Hook&,boost::intrusive::detail::link_dispatch)[with Hook=boost::intrusive::detail::generic_Hook,boost::intrusive::default_标记,(boost::intrusive::link_mode_type)1u,3>]:断言`!Hook.is_linked()'失败。 中止(堆芯转储)

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

341{//如果此断言引发,您可能已销毁了一个对象 342//当它仍然插入到一个活动的容器中时。 343//如果是,请在销毁对象之前将其从容器中移除。 344(void)hook;BOOST\u INTRUSIVE\u SAFE\u hook\u DESTRUCTOR\u ASSERT(!hook.is\u linked()); 345}


请告知

我在谷歌搜索了很多次后才解决了这个问题。应该使用erase(Classname::s_iterator_to(value))而不是“erase(value)”。

我在谷歌搜索了很多次后才解决了这个问题。应该使用erase(Classname::s_iterator_to(value))而不是“erase(value)”。