std::vector<std::pair<int, std::vector<int> > >
というベクトルがあります。つまり、ベクトルとの対の対を含むベクトルです。 (私はマップで同じことを達成することができると知っていますが、それは私が求めているものではありません)ファンクタのc'torで値を検索
STLを使用してintを検索するにはどうすればよいですか?
struct FindFirst {
FindFirst(int i) : toFind(i) { }
int toFind;
bool operator()
(const std::pair<int, std::vector<int> > &p) {
return p.first==toFind;
}
};
このように使用することができます:私は機能するソリューション書い
int valueToFind = 4;
std::find_if(myVec.begin(), myVec.end(), FindFirst(valueToFind));
をしかし、それは少し醜いこのように私には見えます。より良い方法が必要です。 これはありますかより良いこれを行う方法なしC++ 0xまたはBoostから何かを使用していますか? (私はそれを行うための最善の方法を学ぶためにしようとしている、と私は強調しているので、唯一STL)
EDIT:少し混乱は、私が求めているものにありますように が見えます。私が興味を持っているのは、特にSTL algoで使われているときに、ファンクタの検索値にコンストラクタを使うのは悪い習慣かどうかということです。
申し訳ありませんが、私はこの質問を取り返すことができません:なぜこれのためのマップを使用していませんか? –
私は前に同じ問題を複数の方法で見つけました。これは私がこのようなファンクタを必要とする瞬間に思いつくことができる最良の例です。 – Schnommus
あなたが醜いことを見つけたら、あなたはC++を学び始めているだけです:) –