Ermitteln, ob die Karte einen Wert für einen Schlüssel enthält?

Was ist die beste Methode, um festzustellen, ob eine STL-Zuordnung einen Wert für einen bestimmten Schlüssel enthält?

#include <map>

using namespace std;

struct Bar
{
    int i;
};

int main()
{
    map<int, Bar> m;
    Bar b = {0};
    Bar b1 = {1};

    m[0] = b;
    m[1] = b1;

    //Bar b2 = m[2];
    map<int, Bar>::iterator iter = m.find(2);
    Bar b3 = iter->second;

}

Betrachtet man dies in einem Debugger, sieht es aus wieiter ist nur Müll Daten.

Wenn ich diese Zeile auskommentiere:

Bar b2 = m[2]

Der Debugger zeigt, dassb2 ist{i = 0}. (Ich vermute, es bedeutet, dass die Verwendung eines undefinierten Index eine Struktur mit allen leeren / nicht initialisierten Werten zurückgibt?)

Keine dieser Methoden ist so toll. Was ich wirklich gerne hätte, ist eine Benutzeroberfläche wie diese:

bool getValue(int key, Bar& out)
{
    if (map contains value for key)
    {
        out = map[key];
        return true;
    }
    return false;
}

Existiert etwas in dieser Richtung?

Antworten auf die Frage(18)

Ihre Antwort auf die Frage