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

In C++, heterogeneous lookup allows you to store different types of elements in a container, such as `std::multiset`. This can be achieved by using a custom comparison function. This example demonstrates how to achieve heterogeneous lookup using `std::multiset` with different types of elements.

#include #include #include struct CustomComparator { bool operator()(const std::string& a, const std::string& b) const { return a < b; } bool operator()(const int& a, const int& b) const { return a < b; } bool operator()(const std::string& a, const int& b) const { return a < std::to_string(b); } bool operator()(const int& a, const std::string& b) const { return std::to_string(a) < b; } }; int main() { std::multiset<:variant int>, CustomComparator> myMultiset; myMultiset.insert("apple"); myMultiset.insert("banana"); myMultiset.insert(3); myMultiset.insert(1); for (const auto& element : myMultiset) { std::visit([](auto&& arg) { std::cout << arg << ' '; }, element); } return 0; }

C++ multiset heterogeneous lookup C++ containers custom comparator