【问题标题】:how to detach elements from a boost::intrusive set container如何从 boost::intrusive set 容器中分离元素
【发布时间】:2012-06-05 13:27:35
【问题描述】:

我正在尝试从 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) [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 }

请指教

【问题讨论】:

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

标签: boost boost-intrusive


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多