Yes, it is possible, try this code
typedef struct struct1{
int a;
int b;
float c;
float d;
} my_struct_t;
my_struct_t st = { 1, 2, 3.0, 4,0 };
std::map< float, my_struct_t > my_struct_map;
std::pair< float, my_struct_t > p = std::make_pair( st.c, st );
my_struct_map.insert(p);