#include <map>
#include <bitset>
#include <iostream>

int main() {
    auto comp = [](int a, int b) { return std::bitset<32>(a).count() < std::bitset<32>(b).count(); };
    std::map<int, int, decltype(comp)> m {{{13, 1}, {15, 1}, {17, 1}}, comp};

    for (auto const &p : m)
        std::cout << p.first << " (" << std::bitset<32>(p.first).count() << " bits)"<< std::endl;

	return 0;
}