Come è possibile creare una distinzione tra maiuscole e minuscole unordered_map<string, int>
?
L'override di key_equal
è sufficiente o devo anche aggiornare hasher
?senza distinzione tra maiuscole e minuscole_map <string, int>
8
A
risposta
2
Anche Hasher deve essere aggiornato, poiché l'algoritmo hash predefinito does not produce identical hash code for strings that differ only in the case of their symbols - una proprietà essenziale della funzione del codice hash destinata a funzionare con stringhe maiuscole e minuscole.
std::string s1 = "Hello";
std::string s2 = "hello";
std::hash<std::string> hash_fn;
size_t hash1 = hash_fn(s1);
size_t hash2 = hash_fn(s2);
std::cout << hash1 << '\n';
std::cout << hash2 << '\n';
Questo mostra valori diversi su Ideone:
101669370
3305111549
Problemi correlati
- 1. GetMethod senza distinzione tra maiuscole e minuscole?
- 2. Elenco senza distinzione tra maiuscole e minuscole
- 3. AngularJs, senza distinzione tra maiuscole e minuscole
- 4. Make HashSet <string> senza distinzione tra maiuscole e minuscole
- 5. Come si ottiene la corrispondenza senza distinzione tra maiuscole e minuscole nell'elenco <string>?
- 6. Corrispondenza delle maiuscole senza distinzione tra maiuscole e minuscole
- 7. Come sostituire una stringa senza distinzione tra maiuscole e minuscole
- 8. OData e distinzione tra maiuscole e minuscole
- 9. ORACLE 11g senza distinzione tra maiuscole e minuscole per default
- 10. Doctrine LIKE senza distinzione tra maiuscole e minuscole
- 11. Underscore.js Ordinamento senza distinzione tra maiuscole e minuscole
- 12. Ricerca senza distinzione tra maiuscole e minuscole in Mongo
- 13. Come utilizzare PHP strpos senza distinzione tra maiuscole e minuscole?
- 14. Colonne stringa senza distinzione tra maiuscole e minuscole in SQLAlchemy?
- 15. JPA2: senza distinzione tra maiuscole e minuscole come l'abbinamento ovunque
- 16. MySQL senza distinzione tra maiuscole e minuscole DISTINCT
- 17. Elenco filtri Jquery senza distinzione tra maiuscole e minuscole
- 18. Set Matcher Bootstrap Typeahead senza distinzione tra maiuscole e minuscole
- 19. Ricerca elenco senza distinzione tra maiuscole e minuscole
- 20. Corrispondenza senza distinzione tra maiuscole e minuscole in Marpa
- 21. completamento scheda cshell, senza distinzione tra maiuscole e minuscole
- 22. PHP in -array senza distinzione tra maiuscole e minuscole
- 23. come rendere la ricerca senza distinzione tra maiuscole e minuscole
- 24. PHP: parametri senza distinzione tra maiuscole e minuscole
- 25. Ricerca chiave senza distinzione tra maiuscole e minuscole di MemoryCache
- 26. È possibile deserializzare GSON senza distinzione tra maiuscole e minuscole.
- 27. Come rendere String.Contains senza distinzione tra maiuscole e minuscole?
- 28. Automapper - voglio distinzione tra maiuscole e minuscole
- 29. Mappatura da JSON a POJO senza distinzione tra maiuscole e minuscole senza cambiare il POJO
- 30. La stringa LINQ contiene un'altra stringa senza distinzione tra maiuscole
La tua risposta è giusta in generale, ma stiamo parlando di 'std :: hash' funzione di qui. Quindi la tua risposta potrebbe essere sbagliata a seconda di come 'std :: hash ' funziona per le stringhe (che non ho idea)! –
MBZ
@MBZ Non avrebbe senso modificare 'std :: hash' per' stringa's per non prestare attenzione al caso dei caratteri: la funzione sarebbe più costosa in termini di utilizzo della CPU, e comporterebbe più collisioni, anche . – dasblinkenlight
potresti semplicemente rendere tutte le stringhe in minuscolo prima di eliminarle. – aaronman