Qual è il modo migliore per determinare se una mappa STL contiene un valore per una determinata chiave?Determina se la mappa contiene un valore per una chiave?
#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;
}
Esaminando questo in un debugger, sembra iter
soli caratteri privi di significato.
Se io Decommentare questa riga:
Bar b2 = m[2]
Il debugger mostra che b2
è {i = 0}
. (Sto indovinando significa che l'utilizzo di un indice indefinito restituirà una struttura con tutti i valori vuoti/non inizializzati?)
Nessuno di questi metodi è così grande. Quello che mi piacerebbe davvero è un'interfaccia come questa:
bool getValue(int key, Bar& out)
{
if (map contains value for key)
{
out = map[key];
return true;
}
return false;
}
Esiste qualcosa in questo senso?
possibile duplicato di [Come trovare se una data chiave esiste in uno std :: map C++] (http://stackoverflow.com/questions/1939953/how-to-find-if-a-given -key-exists-in-ac-stdmap) – OrangeDog