-1

マップで特定のキーが見つかったかどうかを確認したいので、他の用途のためにそれを変数に入れたいのですが、イテレータを使用したくないのです。mapクラスでfind関数を見つけましたが、イテレータが返されます。キーがマップで見つかったかどうかを確認し、trueが返されたら取得したいと思います。

ありがとう

4

1 に答える 1

6

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";
}
于 2012-04-26T19:47:01.377 に答える