microsoft/Terminal

adjust associative containers to support heterogeneous lookup

Open

#972 geöffnet am 24. Mai 2019

Auf GitHub ansehen
 (3 Kommentare) (1 Reaktion) (0 zugewiesene Personen)C++ (3.212 Forks)batch import
Area-CodeHealthHelp WantedIssue-TaskProduct-Terminal

Repository-Metriken

Stars
 (35.764 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 27T 19h) (24 gemergte PRs in 30 T)

Beschreibung

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.

Contributor Guide