#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

struct data_t {
    int num;
    string str;

    // 最後のconstを忘れると"instantiated from here"というエラーが出てコンパイルできないので注意
    bool operator<( const data_t& right ) const {
        return num == right.num ? str < right.str : 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());

    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;
}
