GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo sé si std::map insert tuvo éxito o falló?

De hecho, el método de inserción que toma un parámetro de sugerencia no devuelve si la inserción tuvo éxito o no. Una forma de verificar si la inserción realmente sucedió sería verificar el tamaño del mapa antes y después de la inserción. Si es lo mismo, la inserción ha fallado (es decir, la clave ya estaba presente). Sé que suena feo, pero esa es la forma más eficiente que se me ocurrió. De hecho, creo que no hay una razón convincente para que la inserción con una pista no deba devolver un par (incluido el valor booleano) al igual que la inserción normal sin pista. Pero una vez que se ha especificado en un estándar anterior, es muy difícil cambiarlo, ya que es un cambio radical que la comunidad de C++ resiente en su mayoría.

Respuesta original (incorrecta)

Ver este enlace

... devuelve un par, con su miembro pair::first establecido en un iterador que apunta al elemento recién insertado o al elemento que ya tenía su mismo valor en el mapa. El pair::second elemento en el par se establece en verdadero si se insertó un nuevo elemento o en falso si ya existía un elemento con el mismo valor.

El enlace también contiene un ejemplo

Por ejemplo:

if(mp.insert(make_pair(key, value)).second == false)
{
   cout << "Insertion failed. Key was present"
}

typedef std::map<std::string, int> map;
map m;
std::pair<map::iterator,bool> result = m.insert(std::make_pair("hi", 42));

resultado.segundo contiene lo que quieres


Depende de lo que entiendas por fallido o exitoso.

std::map::insert tiene éxito cuando inserta el nuevo elemento; de lo contrario, devuelve un iterador a un elemento ya existente.

std::map::insert falla si no hay suficiente memoria para insertar un nuevo elemento y lanza std::bad_alloc .


Linux
  1. Linux:¿cómo saber qué hacer con Grep en Dmesg?

  2. ¿Cómo saber si Ip Multicast está habilitado?

  3. ¿Cómo salir si falla un comando?

  4. ¿Cómo sé si estoy ejecutando un shell anidado?

  5. ¿Cómo sé si mi servidor tiene NUMA?

Cómo enumerar inicios de sesión SSH fallidos en Linux

Cómo instalar AutoFS en Linux

Cómo saber los grupos de un usuario de Linux

¿Cómo compartir la conexión a Internet?

Cómo saber si un disco es un SSD o un HDD

¿Cómo saber dónde está atascado un programa en Linux?