c++ - example - ¿Cómo comprobar si std:: map contiene una clave sin insertar?
map c++ pair (2)
La respuesta de Potatoswatter está bien, pero prefiero utilizar find
o lower_bound
en lower_bound
lugar. lower_bound
es especialmente útil porque el iterador devuelto se puede utilizar posteriormente para una inserción insinuada, en caso de que desee insertar algo con la misma clave.
map<K, V>::iterator iter(my_map.lower_bound(key));
if (iter == my_map.end() || key < iter->first) { // not found
// ...
my_map.insert(iter, make_pair(key, value)); // hinted insertion
} else {
// ... use iter->second here
}
La única forma que he encontrado para buscar duplicados es mediante la inserción y comprobación de std::pair.second
para false
, pero el problema es que esto todavía inserta algo si la clave no se map.contains(key);
, mientras que lo que quiero es un map.contains(key);
función.
Use my_map.count( key )
; solo puede devolver 0 o 1, que es esencialmente el resultado booleano que desea.
Alternativamente, my_map.find( key ) != my_map.end()
también funciona.