How do I use heterogeneous lookup with std::map?

Heterogeneous lookup in C++ allows the use of mixed types when utilizing data structures like std::map. This means you can store various types of keys or values in a single map without a strict type constraint. This can be particularly useful for associative containers where keys need to be unique but may come from different data types.

Below is an example of how to implement heterogeneous lookup using std::map.

#include <iostream> #include <map> #include <string> #include <variant> using KeyType = std::variant; int main() { std::map myMap; myMap.emplace(1, "one"); myMap.emplace("two", "TWO"); // Accessing elements using heterogeneous keys std::cout << std::get<std::string>(myMap.at("two")) << std::endl; // Output: TWO std::cout << std::get<int>(myMap.at(1)) << std::endl; // Output: one return 0; }

heterogeneous lookup std::map C++ example mixed types C++ data structures