#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
#include <set>
class MyClass
{
public:
typedef unsigned int ContentType;
struct MyCompare
{
const MyClass& obj;
MyCompare( const MyClass& mc ) : obj(mc) { }
bool operator ()(const ContentType& lhs,
const ContentType& rhs) const
{
// return something meaningful
return obj.otherMember[lhs] < obj.otherMember[rhs];
}
};
MyClass() : mySet(*this)
{
}
private:
std::set<ContentType, MyCompare> mySet;
std::vector<int> otherMember;
};
int main()
{
MyClass mc;
return 0;
}
I2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHNldD4KCmNsYXNzIE15Q2xhc3MKewpwdWJsaWM6CiAgICB0eXBlZGVmIHVuc2lnbmVkIGludCBDb250ZW50VHlwZTsKICAgIAogICAgc3RydWN0IE15Q29tcGFyZQogICAgewogICAgICAgIGNvbnN0IE15Q2xhc3MmIG9iajsKICAgICAgICBNeUNvbXBhcmUoICBjb25zdCBNeUNsYXNzJiBtYyApIDogb2JqKG1jKSB7IH0KICAgICAgICAKICAgICAgICBib29sIG9wZXJhdG9yICgpKGNvbnN0IENvbnRlbnRUeXBlJiBsaHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb250ZW50VHlwZSYgcmhzKSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAgLy8gcmV0dXJuIHNvbWV0aGluZyBtZWFuaW5nZnVsCiAgICAgICAgICAgIHJldHVybiBvYmoub3RoZXJNZW1iZXJbbGhzXSA8IG9iai5vdGhlck1lbWJlcltyaHNdOwogICAgICAgIH0KICAgIH07CiAgICAKICAgIE15Q2xhc3MoKSA6IG15U2V0KCp0aGlzKQogICAgewogICAgfQogICAgCnByaXZhdGU6CiAgICBzdGQ6OnNldDxDb250ZW50VHlwZSwgTXlDb21wYXJlPiBteVNldDsKICAgIHN0ZDo6dmVjdG9yPGludD4gb3RoZXJNZW1iZXI7Cn07CgppbnQgbWFpbigpCnsKICAgIE15Q2xhc3MgbWM7CiAgICByZXR1cm4gMDsKfQ==