考虑一个类 A 有一个成员 x 和一个 std::vector< A >。现在,在 vector 内的所有元素中搜索最大的 x 是一项常见的任务。显然,如果 x 上有迭代器,我只能使用 std::max_element。但是我必须自己写一个,或者我只是做一个简单的for循环。
maxSoFar = -std::numeric_limits< double >::max();
for( std::vector< A >::const_iterator cit = as.begin(); cit != as.end(); ++cit )
{
if( cit->x > maxSoFar )
maxSoFar = cit->x;
}
但是太繁琐了,我又很懒..有没有更好的选择?
最佳答案
您可以将比较器传递给 max_element。如果您的编译器支持 lambda(可能支持),这很容易:
std::max_element(as.begin(), as.end(),
[](A a, A b){ return a.x < b.x; });
关于c++ - 查找一个 vector 的 max_element,其中一个成员用于决定它是否是最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3994890/