是否可以以优雅的方式在vector <MyType>上运行标准算法?

Ben*_*enj 0 c++ std c++11

我知道如果我有一个vector<int>我可以像这样运行算法:

int max = *max_element(myints.begin(), myints.end());
Run Code Online (Sandbox Code Playgroud)

但是如果我有一个vector<MyStruct>结构中的一个字段是int的话.有没有一种优雅的方法可以在我的所有结构中的int中运行算法?

Ben*_*ley 11

为max_element提供一个比较器:

MyStruct max = *max_element(v.begin(), v.end(),
    [](const MyStruct & lhs, const MyStruct & rhs) { return lhs.theInt < rhs.theInt; });
Run Code Online (Sandbox Code Playgroud)

如果您的编译器还不支持lambdas,则必须编写单独的函数或函数对象类.

或者,如果您operator<为您的类重载以执行相同的比较,那么您可以简单地执行此操作:

MyStruct max = *max_element(v.begin(), v.end());
Run Code Online (Sandbox Code Playgroud)