web-dev-qa-db-fra.com

Comparer unordered_map et unordered_set

Tout d’abord, quelle est la principale différence entre eux?

La seule chose que j'ai trouvée est que unordered_set n'a pas d'opérateur []. Comment dois-je accéder à un élément dans unordered_set, puisqu'il n'y a pas de []?

Quel conteneur utilise un accès aléatoire à la mémoire (ou les deux)?

Et lequel d'entre eux est plus rapide ou utilise moins de mémoire?

5
Welez

Ils sont presque identiques. unordered_set ne contient que des clés et aucune valeur. Il n'y a pas de correspondance entre une clé et une valeur, donc pas besoin d'un operator[]. unordered_map associe une clé à une valeur.

Vous pouvez utiliser les différentes méthodes find dans unordered_set pour localiser des éléments.

13
1201ProgramAlarm

vous pouvez utiliser les itérateurs pour accéder aux éléments.

unordered_set <string> u{
            "Dog",
            "Cat",
            "Rat",
            "Parrot",
            "bee"
};

for(auto& s:u){
     cout << s << ' ';    
} 

unordered_set<string>::const_iterator point = u.find("bee");
1
Sachith Bathiya