findメソッドがstd::mapで提供されたキーを見つけ、要素にイテレータを返すことを知っています。とにかく値を見つけて、要素へのイテレータを取得する方法はありますか? 私がする必要があるのは、指定された値が std::map に存在することを確認することです。マップ内のすべてのアイテムをループして比較することでこれを行いました。しかし、これに対するより良いアプローチがあるかどうかを知りたかったのです。
ここに私が書いたものがあります
bool ContainsValue(Type_ value)
{
bool found = false;
Map_::iterator it = internalMap.begin(); // internalMap is std::map
while(it != internalMap.end())
{
found = (it->second == value);
if(found)
break;
++it;
}
return found;
}
編集
値、キーの組み合わせを格納する別のマップを内部で使用するのはどうですか。だから私はそれでfindを呼び出すことができますか?std::map のfind()は順次検索を行っていますか?
ありがとう