【问题标题】:Usage of boost multi_multi indexboost multi_multi 索引的使用
【发布时间】:2016-12-02 10:33:34
【问题描述】:

我的代码(不是我写的)使用多索引容器。

typedef boost::multi_index_container<
        Block*,
        boost::multi_index::indexed_by<
            boost::multi_index::random_access<>,
            boost::multi_index::ordered_non_unique<BOOST_MULTI_INDEX_MEMBER(Block,uint,pages_invalid) >
      >
    > active_set;

typedef active_set::nth_index<0>::type ActiveBySeq;
typedef active_set::nth_index<1>::type ActiveByCost;
active_set active_cost;

“块”是一类。

这个容器被用作优先队列。

ActiveByCost::iterator it = active_cost.get<1>().end();
    --it;

我想搜索具有变量 A=="特定值" 的成员。 (不适用于优先队列)

A是Class Block的成员变量之一。

有什么办法吗?

【问题讨论】:

    标签: c++ boost multi-index


    【解决方案1】:

    我想搜索具有变量 A=="特定值"的成员

    如果该成员没有索引,则需要在随机访问索引中进行线性搜索:

    auto pos = std::find_if(active_cost.begin(), active_cost.end(), 
                            [](Block const* p) { return p->A == "specific value"; }
    if(pos == active_cost.end())
        // Not found.
    

    【讨论】:

    • “如果这个成员没有索引”是否意味着A不是数组?
    • @WKK 这意味着boost::multi_index::indexed_by&lt;&gt;中没有该成员的索引。
    • @maxim_egorushkin 谢谢。再问一个问题,multi_index容器的位置数据如何访问?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多