#include <iostream>
#include <map>
#include <tuple>
#include <string>
using namespace std;
struct demo{
int x;
};
inline bool operator< (const demo& lhs, const demo& rhs){
return lhs.x < rhs.x;
}
int main() {
std::map<std::tuple<int,string,demo> ,int> a;
a.emplace(std::make_tuple(1,"a",demo {5}),1);
a.emplace(std::make_tuple(1,"a",demo {6}),2);
a.emplace(std::make_tuple(1,"b",demo {5}),3);
a.emplace(std::make_tuple(2,"a",demo {5}),4);
if(a.count(std::make_tuple(2,"a",demo {5}) )){
cout << a[std::make_tuple(2,"a",demo {5})] << endl;
}
if(a.count(std::make_tuple(2,"c",demo {5}))){
cout << a[std::make_tuple(2,"a",demo {5})] << endl;
} else {
cout << "Not there..." << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8dHVwbGU+CiNpbmNsdWRlIDxzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgZGVtb3sKCWludCB4Owp9OwoKaW5saW5lIGJvb2wgb3BlcmF0b3I8IChjb25zdCBkZW1vJiBsaHMsIGNvbnN0IGRlbW8mIHJocyl7IAoJcmV0dXJuIGxocy54IDwgcmhzLng7Cn0KCmludCBtYWluKCkgewoJc3RkOjptYXA8c3RkOjp0dXBsZTxpbnQsc3RyaW5nLGRlbW8+ICxpbnQ+IGE7CglhLmVtcGxhY2Uoc3RkOjptYWtlX3R1cGxlKDEsImEiLGRlbW8gezV9KSwxKTsKCWEuZW1wbGFjZShzdGQ6Om1ha2VfdHVwbGUoMSwiYSIsZGVtbyB7Nn0pLDIpOwoJYS5lbXBsYWNlKHN0ZDo6bWFrZV90dXBsZSgxLCJiIixkZW1vIHs1fSksMyk7CglhLmVtcGxhY2Uoc3RkOjptYWtlX3R1cGxlKDIsImEiLGRlbW8gezV9KSw0KTsKCQoJaWYoYS5jb3VudChzdGQ6Om1ha2VfdHVwbGUoMiwiYSIsZGVtbyB7NX0pICkpewoJCWNvdXQgPDwgYVtzdGQ6Om1ha2VfdHVwbGUoMiwiYSIsZGVtbyB7NX0pXSA8PCBlbmRsOwoJfQoJaWYoYS5jb3VudChzdGQ6Om1ha2VfdHVwbGUoMiwiYyIsZGVtbyB7NX0pKSl7CgkJY291dCA8PCBhW3N0ZDo6bWFrZV90dXBsZSgyLCJhIixkZW1vIHs1fSldIDw8IGVuZGw7Cgl9IGVsc2UgewoJCWNvdXQgPDwgIk5vdCB0aGVyZS4uLiIgPDwgZW5kbDsKCX0KCXJldHVybiAwOwp9