2017-04-07 15 views
-1

私はSTL形式のセットを持って設定します私のために。C++のstdのネストされたペアの検索対象は、::

タイプunsignedの要素は、セット内の内側のペアの最初の要素でのみ検索できますか?

私は以下のアプローチを試みましたが、うまくいきませんでした。 elempairに、参照ではなく、ポインタであるため、

auto it = std::find_if(X.begin(), X.end(), [value_searching] 
(const std::pair<double, std::pair< unsigned, vector<unsigned> >& elem) { 
return elem->second.first == value_searching 
     }); 
+1

' - >'にはポインタまたはイテレータのみを残す必要があります。 'elem'もどちらでもない - それは'ペア 'です。 – aschepler

+0

このケースの代替アプローチは何でしょうか? @aschepler –

+0

このような複雑な構造は実際のライブでは決して意味をなさない...それは、あなたが複数の最初と2番目を持っているので、コードを維持するのを難しくする...また、それはあなたが望むほど効率的でないかもしれない...なぜあなたが項目を見つけるためにキーを使わないならば、セットを使用してください。 – Phil1970

答えて

2

あなたは、代わりに->.を使用する必要があります。

auto it = std::find_if(X.begin(), X.end(), [value](auto& elem) { 
    return elem.second.first == value; 
}); 
+0

このようにして(elem.second)行うことはできますが(elem.second.first)は機能しません。 –

+0

@FabiaBushraTamannaどのように動作しませんか?私のために働く。 –

+0

私の悪い、私は私のセットの宣言で@>逃した@ジョセフ –

関連する問題