2016-12-02 27 views
0

私のコード(私によって書かれていない)マルチインデックスコンテナを使用します。ブーストmulti_multiインデックスの使用

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; 

"ブロック"はクラスの1つです。

このコンテナは優先キューとして使用されます。

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

変数A ==「特定の値」を持つメンバーを検索したいと思います。 (優先キューではない)

Aはクラスブロックのメンバ変数の1つです。

これを行う方法はありますか?

答えて

0

ランダムアクセスでは、線形探索が必要となり、このメンバーにインデックスがない場合、私は、変数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. 
+0

"このメンバーにインデックスがない場合"は、Aが配列ではないことを意味しますか? – WKK

+0

@WKKこれは、そのメンバ上のインデックスが 'boost :: multi_index :: indexed_by <>'にあることを意味します。 –

+0

@maxim_egorushkinありがとうございます。もう1つの質問ですが、どのようにしてpositionでmulti_indexコンテナのデータにアクセスできますか? – WKK

関連する問題