microsoft/Terminal

adjust associative containers to support heterogeneous lookup

Open

#972 ouverte le 24 mai 2019

Voir sur GitHub
 (3 commentaires) (1 réaction) (0 assignés)C++ (3 212 forks)batch import
Area-CodeHealthHelp WantedIssue-TaskProduct-Terminal

Métriques du dépôt

Stars
 (35 764 stars)
Métriques de merge PR
 (Merge moyen 27j 19h) (24 PRs mergées en 30 j)

Description

Heterogeneous lookup has been supported since C++14. To quote the linked article,

C++14 allows the lookup to be done via an arbitrary type, so long as the comparison operator can compare that type with the actual key type. This would allow a map from std::string to some value to compare against a const char* or any other type for which an operator< overload is available. It is also useful for indexing composite objects in a std::set by the value of a single member without forcing the user of find to create a dummy object (for example creating an entire struct Person to find a person by name).

Now, it's magic in that you enable it by specifying std::less<> as the third template argument to an associative container; that is:

std::map<std::string, std::string             > map1;
std::map<std::string, std::string, std::less<>> map2;

map2 supports heterogeneous lookup, whereas map1 does not.

Guide contributeur