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

公司自己建立网站如何做网站客户案例

公司自己建立网站,如何做网站客户案例,岳阳建设公司网站,海外网站加速免费std::ranges::views::common, std::ranges::common_view C20 引入的用于将范围适配为“通用范围”的工具,主要解决某些算法需要传统迭代器对(如 begin 和 end 类型相同)的问题。 基本概念 1. 功能 适配传统算法:将范围&#x…

std::ranges::views::common, std::ranges::common_view

C++20 引入的用于将范围适配为“通用范围”的工具,主要解决某些算法需要传统迭代器对(如 begin 和 end 类型相同)的问题。

基本概念

1. 功能
  • 适配传统算法:将范围(range)的迭代器和哨兵(sentinel)类型统一,使其适配需要“迭代器对”的旧式算法(如 C++17 之前的算法)。
  • 类型一致性:确保 begin() 和 end() 返回的迭代器类型相同。
  • 零开销原则:仅在必要时添加类型转换,无额外内存分配。

以下是详细说明和示例:


核心概念

  • 问题背景:C++20 的某些范围(如 split_view)的 begin 和 end 返回的迭代器类型可能不同,但传统算法(如 C++17 前的算法)需要它们类型相同。
  • 解决方案common_view 将范围适配为 begin 和 end 迭代器类型相同的“通用范围”。

std::ranges::common_view

  • 定义template<std::ranges::view V> class common_view : public std::ranges::view_interface<common_view<V>>
  • 适用场景
    • 当原始范围的迭代器和哨兵类型不同,但需要转换为相同类型时。
    • 需要将范围传递给传统算法(如接受 int* 和 int* 的算法)。

语法与参数

1. 语法
auto common_view = range | std::ranges::views::common;
  • range:输入范围(如容器、视图)。

示例 1:适配 split_view
#include <ranges>
#include <vector>
#include <algorithm>
#include <iostream>int main() {std::string str = "hello,world,cpp20";auto split = str | std::views::split(',');// split 的迭代器和哨兵类型不同,无法直接传递给传统算法// 使用 common_view 适配auto common_range = split | std::views::common;// 现在可以像传统范围一样使用for (const auto& part : common_range) {for (char c : part) std::cout << c;std::cout << '\n';}
}

示例 2:传递给传统算法

某些传统算法(如 std::sort)要求 begin() 和 end() 的迭代器类型严格一致,但 C++20 的某些范围(如 std::ranges::iota_view)可能返回不同类型的哨兵:

示例 2:处理子范围
#include <ranges>
#include <vector>
#include <algorithm>
#include <iostream>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};auto reversed = vec | std::views::reverse;// 传统算法需要 begin 和 end 类型相同// 使用 common_view 适配auto common_reversed = reversed | std::views::common;// 使用 std::sort(仅示例,反转后排序可能无意义)std::ranges::sort(common_reversed); // 需要迭代器类型相同for (int x : common_reversed) {std::cout << x << ' '; // 输出:1 2 3 4 5(排序后的反转)}
}

std::ranges::views::common

  • 定义:范围适配器对象,可通过管道操作符 | 简化 common_view 的创建。
  • 等效操作views::common(r) 等价于 common_view<views::all_t<decltype(r)>>{r}
示例 3:结合管道操作符
#include <ranges>
#include <iostream>
#include <list>
#include <algorithm> // 必须包含此头文件以使用 std::findint main() {std::list<int> lst = {1, 2, 3, 4, 5};auto even = lst | std::views::filter([](int x) { return x % 2 == 0; });// 使用 views::common 适配auto common_even = even | std::views::common;// 传递给传统算法 std::findif (std::find(common_even.begin(), common_even.end(), 4) != common_even.end()) {std::cout << "Found 4\n";}
}

注意事项

  1. 性能common_view 可能引入额外开销(如缓存迭代器),需谨慎使用。
  2. 适用性:仅在需要传统迭代器对时使用,现代算法(如 std::ranges::sort)通常不需要。
  3. 生命周期:确保底层范围的生命周期长于 common_view

总结

  • common_view:将 begin 和 end 迭代器类型不同的范围适配为类型相同的通用范围。
  • views::common:通过管道操作符简化 common_view 的创建。
  • 典型场景:与传统算法交互,或需要迭代器类型一致的操作。


文章转载自:

http://BjzEkBoe.kxLtf.cn
http://pVQfRaOp.kxLtf.cn
http://HygIfhv1.kxLtf.cn
http://xp9qSKKl.kxLtf.cn
http://sTPm20jH.kxLtf.cn
http://ydm6gzj7.kxLtf.cn
http://i5tAA3L6.kxLtf.cn
http://yGaAm5Y3.kxLtf.cn
http://CLTnDV15.kxLtf.cn
http://3NgeGW5n.kxLtf.cn
http://UD0P8Yfc.kxLtf.cn
http://wmD1sD7p.kxLtf.cn
http://y7VpzQXf.kxLtf.cn
http://pM5TKAJQ.kxLtf.cn
http://emHHYfOf.kxLtf.cn
http://ITh3Oq4y.kxLtf.cn
http://qJGB1aYK.kxLtf.cn
http://JsJ8ud1x.kxLtf.cn
http://Uu9oP9Zr.kxLtf.cn
http://mzei6PoM.kxLtf.cn
http://L5QFfxeJ.kxLtf.cn
http://V9rFFpMF.kxLtf.cn
http://IjnqB2yy.kxLtf.cn
http://H3MHXJRf.kxLtf.cn
http://0OP7ZeXc.kxLtf.cn
http://GGzwocc8.kxLtf.cn
http://1yo6Brzm.kxLtf.cn
http://QIlVsrxY.kxLtf.cn
http://g63lD8yZ.kxLtf.cn
http://C5kvdAEK.kxLtf.cn
http://www.dtcms.com/wzjs/753797.html

相关文章:

  • 北京网站制作的公司建筑企业查询系统官网
  • 天津学网站建设编辑网站绑定
  • 网站建设中常用的技术有哪些泉州英文网站建设
  • 用wordpress做的网站佛山网站制作哪家便宜
  • 章丘做网站优化做百度快照要先有网站吗
  • 做网站复杂吗wordpress个人博客模版
  • 官网天下迈步者seo
  • 自己做网站需要固定ip吗免费注册qq邮箱
  • 建设网站公司哪个好自己做网站需要买哪些
  • 做电影网站会不会涉及版权问题wordpress怎么更改域名
  • 网站建设与管理 期末wordpress二级目录安装
  • 商城网站的模块设计桂林网络设计
  • 合肥肥东网站建设网络优化2年工资有多少
  • 做网站安全联盟解松江车墩网站建设
  • 网站建设费用还是网络专业百度关键词优化的意思
  • 台州网站推广优化网上申请营业执照
  • 青州营销型网站建设合肥工程建设信息平台
  • 做网站内容字体多少ptctf wordpress
  • 辽宁省和城乡建设厅网站住房和城乡建设部政务服务门户官网
  • 免费建站哪个好带后台的网站模板
  • 建立一个网站 优帮云百度智能建站平台
  • 技术共享平台南通网站优化公司
  • 微信后台网站开发知识体系电子商务网站建设的开发方案
  • 网站编程入门教程实时军事热点
  • 海口制作网站企业wordpress前台修改用户头像
  • 网站建设利弊三星网上商城优惠券
  • 网站建设培训会讲话视频拍摄公司
  • 试述网站建设的步骤截屏的图片wordpress不能显示
  • 帮助网站源码徐州自助建站模板
  • 做网站需要什么专业方向的员工下载宝硬盘做网站