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

C++23 新特性:ranges::contains 与 ranges::contains_subrange

文章目录

    • ranges::contains
    • ranges::contains_subrange
    • 编译器支持
    • 总结

C++23 标准带来了许多令人兴奋的新特性,其中就包括了 ranges::containsranges::contains_subrange 这两个算法。这两个算法由提案 P2302R4 提出,它们为 C++ 程序员提供了更加丰富和灵活的范围操作能力。

ranges::contains

ranges::contains 算法用于检查一个范围内是否包含指定的值。它属于 <algorithm> 头文件,是范围库(Ranges Library)的一部分,提供更简洁、安全的范围操作。该算法的声明如下:

template< std::input_iterator I, std::sentinel_for<I> S, class T, class Proj = std::identity >
requires std::indirect_binary_predicate< ranges::equal_to, std::projected<I, Proj>, const T*>
constexpr bool contains(I first, S last, const T& value, Proj proj = {});

这个算法接受两个迭代器(或一个范围)和一个要查找的值,然后返回一个布尔值,指示该值是否存在于给定的范围内。

ranges::contains_subrange

ranges::contains_subrange 算法则用于检查一个范围内是否包含另一个范围作为子范围。这个算法同样属于 <algorithm> 头文件,是范围库的一部分。其声明如下:

template< std::forward_iterator I1, std::sentinel_for<I1> S1, std::forward_iterator I2, std::sentinel_for<I2> S2, class Pred = ranges::equal_to, class Proj1 = std::identity, class Proj2 = std::identity >
requires std::indirectly_comparable<I1, I2, Pred, Proj1, Proj2>
constexpr bool contains_subrange(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred = {}, Proj1 proj1 = {}, Proj2 proj2 = {});

这个算法接受两个范围和可选的谓词函数,然后返回一个布尔值,指示第一个范围是否包含第二个范围作为子范围。

编译器支持

根据搜索结果,GCC 13 版本开始支持这两个算法。这意味着如果你正在使用支持 C++23 的编译器,现在就可以开始使用这些新特性了。

总结

ranges::containsranges::contains_subrange 是 C++23 中非常有用的特性,它们扩展了 C++ 范围库的功能,使得对范围的操作更加直观和方便。随着编译器对 C++23 标准的逐步支持,这些新特性将为 C++ 程序员提供更多的便利和灵活性。

http://www.xdnf.cn/news/6497.html

相关文章:

  • 线代第二章矩阵第九、十节:初等变换、矩阵的标准形、阶梯形与行最简阶梯形、初等矩阵
  • RPA 自动化实现自动发布
  • 基于matlab实现AUTOSAR软件开发---答疑6
  • 瓶装燃气送气工考试的实操考核内容有哪些?
  • Python训练营打卡 Day26
  • Git - 1( 14000 字详解 )
  • 动态库和静态库的区别
  • 攻击溯源技术体系:从理论架构到工程化实践的深度剖析
  • SQL实战:06交叉日期打折问题求解
  • 论文学习_Precise and Accurate Patch Presence Test for Binaries
  • 浅析 Spring 启动过程:从源码到核心方法
  • 【Redis】双向链表结构
  • ARM A64 LDR指令
  • constexpr 关键字的意义(入门)
  • 关于在深度聚类中Representation Collapse现象
  • RM算法的地下宫殿
  • 解决 Conda 安装 PyTorch 1.1.0 报错:excluded by strict repo priority(附三种解决方案)
  • 射击游戏demo11
  • 微服务如何实现服务的高并发
  • idea整合maven环境配置
  • 幼儿学前教育答辩词答辩技巧问题答辩自述稿
  • IPLOOK | 2025 MVNOs 世界大会:从Wi-Fi通话到卫星覆盖
  • MapReduce架构-打包运行
  • gitlab+portainer 实现Ruoyi Vue后端CI/CD
  • Trae 插件 Builder 模式:从 0 到 1 开发天气查询小程序,解锁 AI 编程新体验
  • 全面掌握JSR303校验:从入门到实战
  • 安全牛报告解读《低空经济发展白皮书(3.0)安全体系》
  • React事件机制
  • antd mobile 点击 TabBar 切换页面
  • 工业4.0神经嫁接术:ethernet ip转profinet协议通信步骤图解