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

丰台专业网站建设公司wordpress二维码动态图片大小

丰台专业网站建设公司,wordpress二维码动态图片大小,企业营销方案策划,想象力网站建设std::ranges::contains std::ranges::contains 是 C23 中引入的一个算法&#xff0c;用于检查一个范围中是否包含指定的值。它属于 <algorithm> 头文件&#xff0c;是范围库&#xff08;Ranges Library&#xff09;的一部分&#xff0c;提供更简洁、安全的范围操作。 C…

std::ranges::contains 

std::ranges::contains 是 C++23 中引入的一个算法,用于检查一个范围中是否包含指定的值。它属于 <algorithm> 头文件,是范围库(Ranges Library)的一部分,提供更简洁、安全的范围操作。

Call signature

(1)
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 = {} );
(since C++23)
(until C++26)
template< std::input_iterator I, std::sentinel_for<I> S,

          class Proj = std::identity,
          class T = std::projected_value_t<I, Proj> >
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 = {} );
(since C++26)
(2)
template< ranges::input_range R,

          class T,
          class Proj = std::identity >
requires std::indirect_binary_predicate<ranges::equal_to,
                                        std::projected<ranges::iterator_t<R>, Proj>,
                                        const T*>

constexpr bool contains( R&& r, const T& value, Proj proj = {} );
(since C++23)
(until C++26)
template< ranges::input_range R,

          class Proj = std::identity,
          class T = std::projected_value_t<ranges::iterator_t<R>, Proj> >
requires std::indirect_binary_predicate<ranges::equal_to,
                                        std::projected<ranges::iterator_t<R>, Proj>,
                                        const T*>

constexpr bool contains( R&& r, const T& value, Proj proj = {} );
(since C++26)
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 = {} );
(3)(since C++23)
template< ranges::forward_range R1, ranges::forward_range R2,

          class Pred = ranges::equal_to,
          class Proj1 = std::identity, class Proj2 = std::identity >
requires std::indirectly_comparable<ranges::iterator_t<R1>,
                                    ranges::iterator_t<R2>, Pred, Proj1, Proj2>
constexpr bool contains_subrange( R1&& r1, R2&& r2, Pred pred = {},

                                  Proj1 proj1 = {}, Proj2 proj2 = {} );
  • 参数
    • r:要检查的输入范围。
    • value:要查找的值。
    • proj:投影函数(可选),用于对范围中的元素进行转换后再比较。
  • 返回值
    • 如果范围中存在等于 value 的元素,返回 true;否则返回 false

关键点

  1. 线性搜索:从范围起点开始逐个检查元素,直到找到目标值或遍历完整个范围。
  2. 复杂度:时间复杂度为 O(N),空间复杂度为 O(1)。
  3. 投影支持:允许通过 proj 对元素进行转换后再比较(例如查找对象的某个成员)。
  4. 范围安全性:直接操作范围,避免裸指针和迭代器的手动管理。

示例

示例 1:基本用法
#include <algorithm>
#include <vector>
#include <ranges>
#include <iostream>int main() {std::vector<int> v = {1, 2, 3, 4, 5};// 检查是否包含 3bool has_3 = std::ranges::contains(v, 3);std::cout << "Contains 3: " << has_3 << std::endl; // 输出 1(true)// 检查是否包含 6bool has_6 = std::ranges::contains(v, 6);std::cout << "Contains 6: " << has_6 << std::endl; // 输出 0(false)
}

输出:

Contains 3: 1
Contains 6: 0

示例 2:使用投影函数
#include <algorithm>
#include <vector>
#include <ranges>
#include <iostream>struct Person {std::string name;int age;
};int main() {std::vector<Person> people = {{"Alice", 25},{"Bob", 30},{"Charlie", 35}};// 检查是否存在年龄为 30 的人bool has_age_30 = std::ranges::contains(people,30,[](const Person& p) { return p.age; } // 投影:提取 age 成员);std::cout << "Has age 30: " << has_age_30 << std::endl; // 输出 1(true)
}

输出:

Has age 30: 1

应用场景

  1. 简单存在性检查:快速判断某个值是否在集合中。
  2. 条件过滤:结合投影函数检查对象成员的特定值。
  3. 字符串处理:检查字符或子字符串是否存在。

注意事项

  • C++23 支持:需确保编译器支持 C++23(如 GCC 13+、Clang 16+、MSVC 19.30+)。
  • 性能:对于大规模数据,线性搜索可能不够高效,此时建议使用 std::ranges::binary_search(需先排序)

如下container有自己的contains:

std::map::contains
std::set::contains
std::multimap::contains
std::multiset::contains
std::unordered_map::contains
std::unordered_set::contains
std::unordered_multimap::contains
std::unordered_multiset::contains

std::string::contains  C++23

std::array 和 std::vector没有定义contains,只能使用std::ranges::contains, STL并没有提供std::contains

http://www.dtcms.com/wzjs/584322.html

相关文章:

  • 设计一个企业网站首页义乌正规自适应网站建设首选
  • 视频建设网站首页做网站要icp备案吗
  • 重庆网站推广免费软件跨境电商平台介绍
  • 建公司网站哪家好万网域名跳转到指定网站
  • 建设银行陕西省分行网站李建忠 电子商务网站建设与管理 ppt
  • 域名备案查询站长工具wordpress标签插件
  • 深圳免费网站建设个人网站模板flash
  • 综合性电商网站建设企业宣传网站源码
  • qwins是哪个网站做的加盟策划公司
  • 牡丹江做网站wordpress下载面板插件
  • 查询网站的二级域名怎么建公众号
  • 优秀网站设计赏析盘州网站建设
  • 遇到钓鱼网站怎么做快速网站制作
  • 济南企业自助建站私人订制与定制
  • 佛山建站怎么做宜昌当阳网站开发
  • iapp网站做软件郑州网站建设知名公司排名
  • 传统文化网站建设方案哈尔滨关键词优化推广
  • 中企动力 网站模板购物网站功能模块说明
  • 做设计一般在那个网站找图网站建设推广的10种方法
  • 建设公司网站需要什么技术天翼云主机怎么建设网站
  • 企业宣传网站案例太原富库网站建设
  • 分析海尔网站的建设特点和优势济宁网站建设 果壳科技
  • 四川建设厅网站打不开做美容行业的网站哪个好
  • 睢宁建设局网站网站添加链接
  • 网站怎么做最省钱网站后台首页
  • 黄岐建网站做网站的维护成本
  • 在网络上做兼职的网站wordpress播放优酷视频
  • 福州企业网站建设专业服务网页页面设计模板
  • saas建站平台介绍帝国cms如何做网站
  • 服装公司网站多少钱建设银行网上银行