¿Cuál es la mejor manera de determinar si un mapa STL contiene un valor para una clave determinada?
#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;
}
Al examinar esto en un depurador, parece que iter
solo se trata de datos basura.
Si descomento esta línea:
Bar b2 = m[2]
Los espectáculos depurador que b2
es {i = 0}
. (Supongo que significa que usar un índice indefinido devolverá una estructura con todos los valores vacíos / sin inicializar).
Ninguno de estos métodos es tan bueno. Lo que realmente me gustaría es una interfaz como esta:
bool getValue(int key, Bar& out)
{
if (map contains value for key)
{
out = map[key];
return true;
}
return false;
}
¿Existe algo en este sentido?