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?