#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct data_t {
int num;
string str;
};
// 関数オブジェクトを定義
class MY_LESS_DEFINITION{
public:
bool operator() (const data_t& left, const data_t& right) const {
return left.num == right.num ? left.str < right.str : left.num < right.num;
}
};
int main(){
vector<data_t> data_array(3);
data_array[0].num = 15;
data_array[0].str = "zzz";
data_array[1].num = 30;
data_array[1].str = "aaa";
data_array[2].num = 15;
data_array[2].str = "ccc";
sort(data_array.begin(), data_array.end(), MY_LESS_DEFINITION());
for(int i = 0; i < data_array.size(); ++i){
cout << "i " << i << ": " << endl;
cout << " num: " << data_array[i].num << endl;
cout << " str: " << data_array[i].str << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBkYXRhX3QgewogICAgaW50IG51bTsKICAgIHN0cmluZyBzdHI7Cn07CgovLyDplqLmlbDjgqrjg5bjgrjjgqfjgq/jg4jjgpLlrprnvqkKY2xhc3MgTVlfTEVTU19ERUZJTklUSU9OewpwdWJsaWM6CiAgICBib29sIG9wZXJhdG9yKCkgKGNvbnN0IGRhdGFfdCYgbGVmdCwgY29uc3QgZGF0YV90JiByaWdodCkgY29uc3QgewogICAgICAgIHJldHVybiBsZWZ0Lm51bSA9PSByaWdodC5udW0gPyBsZWZ0LnN0ciA8IHJpZ2h0LnN0ciA6IGxlZnQubnVtIDwgcmlnaHQubnVtOwogICAgfQp9OwoKaW50IG1haW4oKXsKICAgIHZlY3RvcjxkYXRhX3Q+IGRhdGFfYXJyYXkoMyk7CgogICAgZGF0YV9hcnJheVswXS5udW0gPSAxNTsKICAgIGRhdGFfYXJyYXlbMF0uc3RyID0gInp6eiI7CiAgICBkYXRhX2FycmF5WzFdLm51bSA9IDMwOwogICAgZGF0YV9hcnJheVsxXS5zdHIgPSAiYWFhIjsKICAgIGRhdGFfYXJyYXlbMl0ubnVtID0gMTU7CiAgICBkYXRhX2FycmF5WzJdLnN0ciA9ICJjY2MiOwoKICAgIHNvcnQoZGF0YV9hcnJheS5iZWdpbigpLCBkYXRhX2FycmF5LmVuZCgpLCBNWV9MRVNTX0RFRklOSVRJT04oKSk7CgogICAgZm9yKGludCBpID0gMDsgaSA8IGRhdGFfYXJyYXkuc2l6ZSgpOyArK2kpewogICAgICAgIGNvdXQgPDwgImkgIiA8PCBpIDw8ICI6ICIgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICIgIG51bTogIiA8PCBkYXRhX2FycmF5W2ldLm51bSA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIiAgc3RyOiAiIDw8IGRhdGFfYXJyYXlbaV0uc3RyIDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=