我知道如果我有一个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)