Qual è la differenza nell'ottenere un valore tramite aMap[key]
e aMap.at(key)
in C++?Differenza tra map [] e map.at in C++?
16
A
risposta
14
In C++ 11 map::at
esiste (chi lo sapeva?).
Si genera un'eccezione se la chiave non esiste, find
restituisce aMap.end()
se l'elemento non esiste, e operator[]
valore inizializza un nuovo valore per il tasto corrispondente se nessun valore esiste lì.
28
Se si accede a una chiave utilizzando l'operatore di indicizzazione []
che non è attualmente parte di una mappa, allora aggiunge automaticamente una chiave per voi. Questo è un enorme avvertimento e prendilo in considerazione. Per questo motivo, preferisco utilizzare l'operatore di indicizzazione []
per l'impostazione e .find()
/.at()
per la ricerca.
Un altro vantaggio di usare .at()
sopra []
è il fatto che può operare su un const std::map
, mentre []
non.
Problemi correlati
- 1. Differenza tra HashMap e Map in Java ..?
- 2. Differenza tra Fork/Join e Map/Reduce
- 3. Differenza tra flusso() map() e stream.map ({}) in Java 8
- 4. Differenza tra `% in%` e `` ==
- 5. Qual è la differenza tra hash-map e array-map in clojure?
- 6. Differenza tra c() e append()
- 7. Differenza tra long e int in C#?
- 8. Differenza tra byte e caratteri in C
- 9. Differenza tra + e - metodi in Objective-C
- 10. Differenza tra Convert.ToString() e .ToString() in C#?
- 11. Differenza tra char e firma in C++?
- 12. Differenza tra char * e char [] in C
- 13. C'è qualche differenza tra C c; e C c = C() ;?
- 14. Differenza di enum tra java e C++?
- 15. Differenza tra C# utilizzando e l'importazione Java
- 16. Qual è la differenza tra `global-set-key` e` definire-chiave global-map` in Emacs
- 17. Differenza tra ombre (VB.NET) e Novità (C#)
- 18. Differenza tra operatori uguali (LINQ) e == (C#)?
- 19. differenza di C# tra casting e come?
- 20. Differenza tra un'eccezione C++ e un'eccezione strutturata
- 21. Differenza C++ tra 0 e 0,0
- 22. Differenza tra mapValues e trasformazione in Mappa
- 23. differenza tra Java e C++ copy constructor
- 24. Differenza tra ASP.Net, C# .Net e VB.Net?
- 25. Differenza tra Nil e NULL e Null in Objective-C
- 26. Differenza tra "o" e "||"
- 27. Differenza tra ogg-c e java
- 28. Differenza tra mappa e dict
- 29. Differenza tra numpy.logical_and e &
- 30. Differenza tra Iterator e Listiterator?
[Ovviamente lo fa] (http://en.cppreference.com/w/cpp/container/map/at) ... –
@KerrekSB (dal C++ 11) non lo sapeva. –