#include <set>
#include <string>
#include <iostream>
struct test {
std::string key;
std::string data;
};
bool operator<(const test& t, const std::string& str) { return t.key < str; }
bool operator<(const std::string& str, const test& t) { return str < t.key; }
bool operator<(const test& t1, const test& t2) { return t1.key < t2.key; }
std::set<test, std::less<>> s;
int main() {
test newmember;
newmember.key = "key";
newmember.data = "data";
s.insert(newmember);
auto it = s.find("key");
std::cout << it->key << ", " << it->data << std::endl;
return 0;
}
I2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IHRlc3QgewogICAgc3RkOjpzdHJpbmcga2V5OwogICAgc3RkOjpzdHJpbmcgZGF0YTsKfTsKCmJvb2wgb3BlcmF0b3I8KGNvbnN0IHRlc3QmIHQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsgcmV0dXJuIHQua2V5IDwgc3RyOyB9CmJvb2wgb3BlcmF0b3I8KGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGNvbnN0IHRlc3QmIHQpIHsgcmV0dXJuIHN0ciA8IHQua2V5OyB9CmJvb2wgb3BlcmF0b3I8KGNvbnN0IHRlc3QmIHQxLCBjb25zdCB0ZXN0JiB0MikgeyByZXR1cm4gdDEua2V5IDwgdDIua2V5OyB9CnN0ZDo6c2V0PHRlc3QsIHN0ZDo6bGVzczw+PiBzOwoKaW50IG1haW4oKSB7CiAgICB0ZXN0IG5ld21lbWJlcjsKICAgIG5ld21lbWJlci5rZXkgPSAia2V5IjsKICAgIG5ld21lbWJlci5kYXRhID0gImRhdGEiOwogICAgcy5pbnNlcnQobmV3bWVtYmVyKTsKCiAgICBhdXRvIGl0ID0gcy5maW5kKCJrZXkiKTsKICAgIHN0ZDo6Y291dCA8PCBpdC0+a2V5IDw8ICIsICIgPDwgaXQtPmRhdGEgPDwgc3RkOjplbmRsOwoKCXJldHVybiAwOwp9