lambda函数中的Max_element

max_element in lambda function

本文关键字:element Max 函数 lambda      更新时间:2023-10-16

我实现了这个函数,但它仍然给出以下错误,我不知道为什么…

/usr/include/c++/4.8/bits/stl_algo.h:6325: error: no match for call to '(Farm::killHeaviestAnimalOnFarm()::__lambda0) (Animal*&, Animal*&)' if (__comp(*__result, *__first)) ^

我在网上搜索了一些例子,我看不出我的有什么不同。

我的。cpp文件有如下killheavyestanimalonfarm

Animal *Farm::killHeaviestAnimalOnFarm()
{
    auto minmax_widths = std::max_element(animals.begin(), animals.end(),
            [] (Animal const& lhs, Animal const& rhs) {
                return lhs.getWeight() < rhs.getWeight();
            });
}

如果animalsvector<Animal*>,那么将lambda函数更改为:

       auto minmax_widths = std::max_element(animals.begin(), animals.end(),
            [] (Animal const * lhs, Animal const * rhs) {
            return lhs->getWeight() < rhs->getWeight();
    });

另一种选择是使animalsvector<Animal>,在这种情况下,lambda按原样工作。