当前位置: 首页 > news >正文

C++20中views的学习与实战练习

我们先来看实例:

有 n 座山排成一列,每座山都有一个高度。给你一个整数数组 height ,其中 height[i] 表示第 i 座山的高度,再给你一个整数 threshold 。
对于下标不为 0 的一座山,如果它左侧相邻的山的高度严格大于threshold ,那么我们称它是稳定的。我们定义下标为 0 的山不是稳定的。
请你返回一个数组,包含所有稳定山的下标,你可以以任意顺序返回下标数组。

经过对题意的分析,可以分析出三个关键要点。

(1) 首先要处理的数据范围不包含 0,是 [1, n)。

(2) 然后针对每个位置的判断是否符合题意对稳定的要求。

(3) 最后将满足判断的下标合并到一个数组中作为答案。

现在通过 range 和 view 可以分别针对这三个要点轻松处理。

#include <ranges> ​ class Solution { public: std::vector<int> stableMountains(vector<int>& height, int threshold) { // 1. 处理范围 [1, n) return views::iota(1, ssize(height)) // 2. 判断左侧相邻山的高度严格大于 threshold | views::filter([&](int i) { return height[i - 1] > threshold; }) // 3. 合并为 vector<int> 返回答案 | ranges::to<vector<int>>(); } };

最后注意,这里的 ranges::to<> 是 C++23 中引入的函数。没错,力扣已经开始支持 C++23 标准了!

总结

range 是 C++20 的四大特性中最常用和最贴近每个程序员的一个特性。通过上面的学习,想必大家应该可以感受到 view 的简洁和高效。

从使用层面来讲,我们只需要付出很少的学习代价就能了解和快速运用 view 来编写代码。

且现在的主流编译器和在线平台对该特性的支持非常完善,比如力扣甚至支持到 C++23 标准一样。因此对于 range 我们更应该学起来,用起来!

http://www.jsqmd.com/news/663149/

相关文章:

  • 防止SQL注入的运维实践_实时清理数据库缓存与历史记录
  • STM32CubeMX零代码配置PWM驱动MG90S舵机(附避坑指南)
  • HTML函数开发用防泼溅键盘有必要吗_耐用性硬件选择建议【指南】
  • 2026年最新降AI率工具排行榜,看完不再纠结怎么选 - 我要发一区
  • SurveyKing企业级问卷系统部署挑战与高可用架构解决方案
  • Rockchip RK3588音频子系统DTS配置实战:以ES8388外接声卡为例
  • x86服务器安装GTX 1070 Ti + CUDA全流程指南
  • 2026年降AI率工具排行:毕业生亲测这5款值得收藏 - 我要发一区
  • 如何实现SQL视图的灰度发布_版本兼容与双重定义方案
  • ORB-SLAM2稠密建图实战:从编译到实时彩色点云生成与保存
  • 从原理到选型:热敏电阻、RTD与热电偶的工业测温实战指南
  • Spring Boot 自动配置机制剖析
  • 3分钟掌握RPG Maker解密技巧:解锁游戏资源宝藏
  • 技术速递|GitHub Copilot CLI 结合多模型能力提供“第二视角”
  • SAP PI/PO HTTPS接口调用实战:从SSL证书导入到彻底告别iaik.security.ssl.SSLCertificateException
  • 毕业设计 基于单片机的太阳追光系统(源码+硬件+论文)
  • Redis怎样配置集群节点的超时发现_调整cluster-node-timeout控制节点主观下线灵敏度
  • 万象熔炉使用技巧:避开模糊残缺,生成更干净的画面
  • python skopeo
  • 如何用Python-miio轻松控制小米智能设备:2025终极教程
  • STC 51单片机 多位数码管动态显示:从原理到实战的优化技巧
  • SV队列的‘$’符号到底怎么用?从[$:2]到[1:$]的索引技巧与避坑指南
  • JavaScript中V8引擎的JIT即时编译与热点代码优化
  • 从零搭建渗透测试环境:Windows下JDK 1.8.0_202的精准部署与避坑指南
  • 亚洲美女-造相Z-Turbo多场景落地:从个人创作到工作室级AI绘图工作流
  • HakcMyVM-Liceo
  • 别再乱用_mm_malloc了!手把手教你搞定AVX-512内存对齐,避免段错误
  • 集合(ArrayList)
  • 交易赚了8位数,只因学会看16种K线,准确判断买卖点!胜率99%!
  • AI写代码却不敢上线?(2024行业首份《生成代码可信度白皮书》深度拆解:5大度量维度+7类缺陷拦截阈值)