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

怎么做淘宝联盟网站推广大航母网站建设流程

怎么做淘宝联盟网站推广,大航母网站建设流程,wordpress菜单判断,为企网站文章目录 引言C20 Ranges库回顾什么是Rangesstd::views的作用 views::slide 概述基本概念原型定义辅助概念工作原理代码示例输出结果 views::slide 的应用场景计算移动平均值查找连续的子序列 总结 引言 在C的发展历程中,每一个新版本都会带来一系列令人期待的新特…

文章目录

    • 引言
    • C++20 Ranges库回顾
      • 什么是Ranges
      • std::views的作用
    • `views::slide` 概述
      • 基本概念
      • 原型定义
      • 辅助概念
      • 工作原理
      • 代码示例
      • 输出结果
    • `views::slide` 的应用场景
      • 计算移动平均值
      • 查找连续的子序列
    • 总结

引言

在C++的发展历程中,每一个新版本都会带来一系列令人期待的新特性,这些特性不仅提升了语言的性能和表达能力,还为开发者提供了更加便捷和高效的编程方式。C++23作为C++标准的一个重要版本,也引入了许多实用的特性,其中views::slide(提案编号P2442R1)就是一个非常有价值的范围适配器,它与C++20引入的Ranges库紧密相关,为处理范围数据提供了新的视角和方法。

C++20 Ranges库回顾

在深入了解views::slide之前,我们有必要先回顾一下C++20引入的Ranges库。Ranges库是C++20的一个重要特性,它彻底改变了我们处理序列数据的方式,提供了更富有表现力、更易组合的抽象。

什么是Ranges

简单来说,Range就是一种可以遍历的序列,你可以把它想象成更智能、更灵活的数组或者容器。C++20引入了Ranges这个概念,让我们可以更方便地操作这些序列。例如,我们可以使用Ranges来过滤、转换、拼接序列等。

std::views的作用

std::views是C++20里提供的一系列工具函数,用来对序列进行各种变换。它可以帮助我们以一种非常直观的方式对序列进行操作,比如过滤、转换、切片等等。以下是一个简单的示例,展示了如何使用 std::views 来过滤出数组中的偶数,并将这些偶数加倍:

#include <iostream>
#include <vector>
#include <ranges>int main() {std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};auto result = numbers | std::views::filter([](int n) { return n % 2 == 0; })| std::views::transform([](int n) { return n * 2; });for (int n : result) {std::cout << n << ' ';}return 0;
}

在这个示例中,我们使用std::views::filterstd::views::transform 对序列进行了处理,代码不仅简洁,而且非常直观。

views::slide 概述

基本概念

std::ranges::views::slidestd::ranges::slide_view 是C++23引入的新特性。slide_view 是一个范围适配器,它接受一个view和一个数字n,并产生一个视图,其第m个元素(一个“窗口”)是原始视图的第m个到第 (m + n - 1) 个元素的视图。

s为原始视图的大小,则生成的视图的大小为:

  • 如果s >= n,则为s - n + 1
  • 否则为0,并且生成的视图为空。

views::slide 表示一个RangeAdaptorObject。给定子表达式en,表达式 views::slide(e, n) 等价于表达式 slide_view(e, n)。如果n不大于0,则行为未定义。

原型定义

template <ranges::forward_range V>
requires ranges::view<V>
class slide_view : public ranges::view_interface<slide_view<V>>;namespace views {inline constexpr /* unspecified */ slide = /* unspecified */;
}template <ranges::viewable_range R>
constexpr ranges::view auto slide(R&& r, ranges::range_difference_t<R> n);template <class DifferenceType>
constexpr /* range adaptor object */ slide(DifferenceType&& n);

辅助概念

template <class V>
concept /*slide-caches-nothing*/ = ranges::random_access_range<V> && ranges::sized_range<V>;template <class V>
concept /*slide-caches-last*/ = !/*slide-caches-nothing*/<V> && ranges::bidirectional_range<V> && ranges::common_range<V>;template <class V>
concept /*slide-caches-first*/ = !/*slide-caches-nothing*/<V> && !/*slide-caches-last*/<V>;

工作原理

slide_view 通过移动一个固定大小的窗口在原始视图上滑动,从而生成一系列子视图。每次滑动时,窗口会向前移动一个元素,直到遍历完整个原始视图。这种方式可以方便地处理需要对连续元素进行操作的场景,例如计算移动平均值、查找连续的子序列等。

代码示例

#include <iostream>
#include <vector>
#include <ranges>int main() {std::vector<int> v = {1, 2, 3, 4, 5};auto slide_view = v | std::views::slide(2);for (auto sub_view : slide_view) {for (auto element : sub_view) {std::cout << element << ' ';}std::cout << '\n';}return 0;
}

在这个示例中,我们创建了一个包含5个元素的向量v,然后使用views::slide(2)创建了一个滑动窗口大小为2的视图。最后,我们遍历这个视图,并打印出每个子视图中的元素。

输出结果

1 2
2 3
3 4
4 5

views::slide 的应用场景

计算移动平均值

移动平均值是一种常用的统计方法,用于平滑数据序列。使用views::slide可以很方便地计算移动平均值。

#include <iostream>
#include <vector>
#include <ranges>
#include <numeric>int main() {std::vector<double> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};auto slide_view = data | std::views::slide(3);for (auto sub_view : slide_view) {double sum = std::accumulate(sub_view.begin(), sub_view.end(), 0.0);double average = sum / 3;std::cout << "Moving average: " << average << '\n';}return 0;
}

在这个示例中,我们创建了一个包含10个元素的向量data,然后使用views::slide(3)创建了一个滑动窗口大小为3的视图。接着,我们遍历这个视图,并计算每个子视图的平均值。

查找连续的子序列

使用views::slide可以方便地查找连续的子序列。

#include <iostream>
#include <vector>
#include <ranges>
#include <algorithm>int main() {std::vector<int> data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};std::vector<int> target = {3, 4, 5};auto slide_view = data | std::views::slide(target.size());auto it = std::find_if(slide_view.begin(), slide_view.end(), [&target](auto sub_view) {return std::equal(sub_view.begin(), sub_view.end(), target.begin());});if (it != slide_view.end()) {std::cout << "Found target subsequence." << '\n';} else {std::cout << "Target subsequence not found." << '\n';}return 0;
}

在这个示例中,我们创建了一个包含10个元素的向量data和一个包含3个元素的向量target。然后,我们使用views::slide(target.size())创建了一个滑动窗口大小为3的视图。接着,我们使用std::find_if查找是否存在与target相等的子序列。

总结

views::slide 是C++23中一个非常实用的范围适配器,它为处理连续元素提供了一种简洁、高效的方式。通过使用views::slide,我们可以轻松地实现移动窗口的功能,从而处理各种需要对连续元素进行操作的场景。同时,views::slide 与Ranges库的其他组件结合使用,可以进一步提高代码的可读性和可维护性。在实际开发中,我们可以根据具体需求灵活运用views::slide,以提高代码的性能和效率。


文章转载自:

http://GD2TUUeh.mfmrg.cn
http://Wb2VRJW3.mfmrg.cn
http://0xc0LVEw.mfmrg.cn
http://pI470DM7.mfmrg.cn
http://v3dvhT0B.mfmrg.cn
http://opJP4Wgx.mfmrg.cn
http://dqNkzgeV.mfmrg.cn
http://lgs6g3LZ.mfmrg.cn
http://6UMqJxaI.mfmrg.cn
http://5zkC8Nnk.mfmrg.cn
http://b4xNV3Kx.mfmrg.cn
http://aHGUDZrs.mfmrg.cn
http://lTj29CrB.mfmrg.cn
http://MotNW1kB.mfmrg.cn
http://xDImkukX.mfmrg.cn
http://71I5ijVt.mfmrg.cn
http://jIkYvBtb.mfmrg.cn
http://ytvzsSQO.mfmrg.cn
http://w1qTt1B6.mfmrg.cn
http://8wFwNdGQ.mfmrg.cn
http://dWeUoPJ7.mfmrg.cn
http://0fDSlENS.mfmrg.cn
http://TgtZkOtt.mfmrg.cn
http://2EgmmEuY.mfmrg.cn
http://APr4UEBm.mfmrg.cn
http://infGIMzP.mfmrg.cn
http://UBYhW6dy.mfmrg.cn
http://q2qJPq4y.mfmrg.cn
http://YwJ7a8Ul.mfmrg.cn
http://57sxxwmn.mfmrg.cn
http://www.dtcms.com/wzjs/750830.html

相关文章:

  • 西宁企业网站营销推广惠民建设局网站
  • 佛山制作做网站html5自适应网站源码
  • nginx网站301重定向怎么做软件技术适合女生学吗
  • dw做汽车网站域名审核怎么做返利网站
  • 宁波市网站排名优化大气集团网站源码
  • 苏州免费自助建站网站建设保定做网站开发的公司有哪些
  • 怎么建网站 做app软件溧阳网站建设制作
  • 珠海市住房和城乡建设局网站平面设计专业学校排名
  • 请人用wordpress建站假期网站的网页
  • 东莞哪家网站建设比较好安徽安庆区号
  • 网站后台是什么意思简述网站推广的意义和方法
  • php网站开发笔试题嵌入式系统开发
  • 怎么把个人做的网站上传到网上wordpress python采集器
  • 怎样在谷歌上建设网站响应式网站cms
  • 微信公众号涨粉 网站wordpress用qq
  • 网站页面设计 颜色 背景 要求为什么网站开发成本高
  • 深圳专业优定软件网站建设朋友圈广告推广平台
  • 免费网站 推广网站腾讯云域名备案需要提供网站建设方案书
  • 翔安区建设局网站做网站过程视频
  • 玄圭做网站怎么样中核二二正式员工一月多少钱
  • 有哪些做企业点评的网站wordpress 查看大图
  • 高端网站设计收费济南网络招聘
  • 优秀企业站网站南昌大学南昌网站建设公司
  • 电商网站活动推广小江网站建设
  • app使用什么做的网站吗wordpress下拉 友情链接
  • 个人购物网站需要备案吗企业官网如何建设
  • 怎样查询网站的备案号做网站怎样投放广告
  • 兰州快速seo整站优化招商网页升级紧急通知怎么取消
  • 找一个免费域名的网站网站建设 doc
  • 网站开发 实战织梦做中英文网站步骤