GNU/Linux >> Linux Esercitazione >  >> Linux

Come faccio a sapere se std::map insert è riuscito o meno?

Infatti il ​​metodo insert che accetta un parametro hint non restituisce se l'inserimento è riuscito o meno. Un modo per verificare se l'inserimento è effettivamente avvenuto sarebbe controllare la dimensione della mappa prima e dopo l'inserimento. Se è lo stesso, l'inserimento non è riuscito (ovvero la chiave era già presente). So che sembra brutto, ma è il modo più efficiente che potrei trovare. In effetti, credo che non vi sia alcuna ragione convincente per cui l'inserimento con un suggerimento non debba restituire una coppia (incluso il bool) proprio come fa il normale inserto senza suggerimento. Ma una volta che è stato specificato in uno standard precedente, è molto difficile modificarlo, poiché si tratta di un cambiamento radicale, cosa che la comunità C++ risente maggiormente.

Risposta originale (errata)

Vedi questo link

... restituisce una coppia, con il suo membro pair::first impostato su un iteratore che punta all'elemento appena inserito o all'elemento che aveva già lo stesso valore nella mappa. Il pair::second elemento nella coppia è impostato su true se è stato inserito un nuovo elemento o su false se esisteva un elemento con lo stesso valore.

Il link contiene anche un esempio

Ad esempio:

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));

result.second contiene quello che vuoi


Dipende da cosa intendi per fallito o riuscito.

std::map::insert ha successo quando inserisce il nuovo elemento, altrimenti restituisce un iteratore a un elemento già esistente.

std::map::insert fallisce se non c'è memoria sufficiente per inserire un nuovo elemento e genera std::bad_alloc .


Linux
  1. Come sapere se Dd funziona ancora?

  2. Come fa Bash a sapere come viene invocato?

  3. Come sapere se il multicast IP è abilitato?

  4. Come sapere se un utente ha diritti sudo

  5. Come sostituire un dispositivo Btrfs guasto

Come elencare gli accessi SSH non riusciti su Linux

Come installare AutoFS su Linux

Come conoscere i gruppi di un utente Linux

Come posso sapere se netcat e dd funzionano?

Come condividere la connessione Internet?

Come sapere se un disco è un SSD o un HDD