35528

[code]

    typedef struct student_score{
        char* name;
        int m_n2;
    }SudentScore;
    
    int main()
    {
        std::vector< SudentScore > vec;
        SudentScore _student = { 0 };
    
        _student.name = "hoge";
        _student.m_n2 = 2;
        vec.push_back(_student);
    
        _student.name = "aho";
        _student.m_n2 = 3;
        vec.push_back(_student);
    
    }
    
[/code]

max_elementを使うまでわかりましたが、構造体のm_n2のメンバに対して使うにはどうしたらよいのかわかりません


CC BY-SA 3.0
2017-06-13T02:57:04.413
35527
2017-06-13T03:39:58.593
2017-06-13T03:39:58.593
4236
23754
question
c++ c++11
vectorを用いた構造体配列の最大値の求め方


[std::max_element](https://cpprefjp.github.io/reference/algorithm/max_element.html)の３引数バージョンを使用して

[code]

    auto max = std::max_element(
        std::begin(vec),
        std::end(vec),
        [](const auto& l, const auto& r) { return l.m_n2 < r.m_n2; }
    );
    std::cout << "max student: " << max->name << ", score: " << max->m_n2 << std::endl;
    
[/code]

とかでしょうか？

* * *

C++11タグが付けられていたので、`vec`初期化部分は

[code]

    std::vector<student_score> vec{
        { "hoge", 2 },
        { "aho",  3 },
    };
    
[/code]

と書けます。また必要なければ`typedef`は使わず通常の構造体名を使用されることをお勧めします。


CC BY-SA 3.0
2017-06-13T03:39:43.810
35528
2017-06-13T03:39:43.810
4236
35527
answer