#include<map>
#include <iostream>

class Class1
{
public:
    Class1(int id) : id(id) {}
    int getId() const { return id; }

private:
    int id;
};

int main() {
    auto comp = [](const Class1& lhs, const Class1& rhs){ return lhs.getId() < rhs.getId(); };
    std::map<Class1, int, decltype(comp)> c2int(comp);

    Class1 c1(1), c2(0), c3(2);
    c2int[c1] = 12;
    c2int[c2] = 13;
    c2int[c3] = 14;

    for (auto const &kv : c2int)
        std::cout << kv.first.getId() << ", " << kv.second << std::endl;

	return 0;
}