gpt4 book ai didi

c++ - 如何获取属于某个范围的 vector 中的最大元素?

转载 作者:行者123 更新时间:2023-12-05 09:30:57 24 4
gpt4 key购买 nike

虽然有一个明确的 for 循环解决方案,但我一直在寻找一个解决方案来获得给定范围内 vector 的最大值。

例如假设一个 vector 有 3,5,7,9,5,1,6,7,4,2 并且给定的范围是 [4,8] 那么最大元素应为 7

我一直在寻找一种使用一些内置标准库函数的单行/短解决方案。

数组包含所有正数。

这是我试过的:

int max = -1;
for (i = 0; i < n; i++)
if (arr[i] > max && arr[i] >= low && arr[i] <= high)
max = arr[i];

我只是在寻找一个简单的标准库 vector 解决方案。

最佳答案

在一行中挤太多东西或总是使用算法并不总是值得的,尤其是当循环清晰易读时。总之,如果您愿意,可以使用 std::accumulate。二元运算与您的原始代码非常接近,我只是使用了条件运算符而不是 if:

auto x = std::accumulate(arr.begin(),arr.end(),-1,[high,low](int accu,int elem){
return (elem > accu && elem >= low && elem <= high ) ? elem : accu;
});

Live Demo

关于c++ - 如何获取属于某个范围的 vector 中的最大元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69194358/

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