微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 查找向量的max_element,其中使用成员来确定其是否为最大值

考虑具有成员x和std :: vector<的A类. A>.现在,在向量内的所有元素中搜索最大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;
}

但它太乏味了,我太懒了..有更好的选择吗?

解决方法

如果你可以使用boost,那么你可以为max_element所期望的二元谓词编写一个lambda表达式:
struct A
{
    A(int n): x(n)
    {
    }
    int x;
};

using namespace std;
using namespace boost::lambda;

int main()
{
    vector<A> as;
    as.push_back(A(7));
    as.push_back(A(5));
    as.push_back(A(3));

    vector<A>::iterator iter = max_element(as.begin(),as.end(),bind(&A::x,_2) > bind(&A::x,_1));
    int max = iter->x;
}

原文地址:https://www.jb51.cc/c/117099.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐