gpt4 book ai didi

c++ - 如何根据属性从 vector 中提取最大的对象?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:41 25 4
gpt4 key购买 nike

假设我有一堆 Donut 对象,每个 donut 都有一个公共(public)整数属性 diameter。如果我有一个 donut vector ,如何提取直径最小或最大的 donut ?

最佳答案

您使用 std::min_elementstd::max_element .例如,给定一个 std::vector<int> :

std::vector<int> v;
std::vector<int>::iterator it = std::max_element(v.begin(), v.end());
// 'it' points to the largest element in 'v'

如果你想使用 operator< 以外的东西来比较元素(默认使用),你需要编写一个自定义比较器:

bool compare_donut_diameters(const Donut& x, const Donut& y)
{
return x.diameter < y.diameter;
}

用作:

std::vector<Donut> v;
std::vector<Donut>::iterator it = std::max_element(v.begin, v.end(),
compare_donut_diameters);

您还可以使用函数对象(也称为仿函数)实现比较器,或者如果您的编译器支持 lambda 表达式,您可以使用 lambda:

auto it = std::max_element(v.begin(), v.end(), 
[](const Donut& x, const Donut& y) { return x.diameter < y.diameter; });

关于c++ - 如何根据属性从 vector 中提取最大的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4060558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com