c++ - 查找一个 vector 的 max_element,其中一个成员用于决定它是否是最大值

标签 c++ stl max

考虑一个类 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/

相关文章:

c++ - 清除任何交易

c++ - 跳过程序有什么作用?

c++ - 当分配的字符串上带有指针的分配结构作为 pthread 的参数传递时,指针丢失

c++ - 头文件类成员函数声明错误: "incomplete type ' ' name in nested name specifier"

c++ - std::list 元素删除引起麻烦

C++ 查找并保存 vector 中的重复项

c++ - 使用模板模板参数时出错

MySQL max-value——时间和频率

mysql - 选择总和,其中总和

javascript - 为什么 Math.min() 返回正无穷大,而 Math.max() 返回负无穷大?