You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C++标准库获取vector中处于指定数值范围内的最大元素

解决方案

C++20 及以上最简方案

借助范围适配器(ranges)可以实现极简写法,需要引入<algorithm>和<ranges>头文件:

auto filtered = arr | std::views::filter([=](int x) { return x >= low && x <= high; });
int max_val = filtered.empty() ? -1 : *std::ranges::max_element(filtered);

如果可以保证数组中一定存在符合范围的元素,可直接合并为一行代码:

int max_val = *std::ranges::max_element(arr | std::views::filter([=](int x) { return x >= low && x <= high; }));

兼容 C++11 及以上的方案

如果使用的标准版本不支持ranges,可以用std::max_element配合自定义比较谓词实现,需要引入<algorithm>头文件:

int max_val = -1;
auto it = std::max_element(arr.begin(), arr.end(), [=](int a, int b) {
    bool a_ok = a >= low && a <= high;
    bool b_ok = b >= low && b <= high;
    return a_ok && b_ok ? a < b : !a_ok && b_ok;
});
if (it != arr.end() && *it >= low && *it <= high) {
    max_val = *it;
}

两种方案效果和你现有for循环逻辑完全一致,示例输入{3,5,7,9,5,1,6,7,4,2}、范围[4,8]时,运行得到的max_val就是7。

内容的提问来源于stack exchange,提问作者user12595757

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:57:01