how example ejemplo c++ stl map

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.