マップで特定のキーが見つかったかどうかを確認したいので、他の用途のためにそれを変数に入れたいのですが、イテレータを使用したくないのです。mapクラスでfind関数を見つけましたが、イテレータが返されます。キーがマップで見つかったかどうかを確認し、trueが返されたら取得したいと思います。
ありがとう
std::map::count()
マップに特定のキーが含まれているかどうかを通知します。キーがマップ内にある場合はoperator[]
、デフォルト値が追加されないことを知って、値を取得するために使用できます(ただし、ildjarnが指摘しているように、マップを2回検索する必要があります)。
std::map<int, int> m;
m[0] = 1;
m[1] = 2;
if (m.count(0))
{
std::cout << "value=" << m[0] << "\n";
}
なぜfind()
魅力的ではないのか、私にはわかりません:
std::map<int, int>::iterator i = m.find(0);
if (i != m.end())
{
std::cout << "value=" << i->second << "\n";
}