Quelle est la meilleure façon de déterminer si une carte STL contient une valeur pour une clé donnée ?
#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;
}
En examinant cela dans un débogueur, on obtient ce qui suit iter
n'est qu'une donnée inutile.
Si je décommente cette ligne :
Bar b2 = m[2]
Le débogueur montre que b2
es {i = 0}
. (Je suppose que cela signifie que l'utilisation d'un index non défini renverra une structure avec toutes les valeurs vides/non initialisées).
Aucune de ces méthodes n'est très efficace. Ce que j'aimerais vraiment, c'est une interface comme celle-ci :
bool getValue(int key, Bar& out)
{
if (map contains value for key)
{
out = map[key];
return true;
}
return false;
}
Existe-t-il quelque chose de ce type ?
2 votes
Duplication possible de Comment savoir si une clé donnée existe dans une std::map C++ ?