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

洛阳制作网站ihanshi汉口网站建设制作

洛阳制作网站ihanshi,汉口网站建设制作,浙江网站建设哪家最好,国内外优秀网站1. 简介 std::span提供了一种安全的访问线性连续数组的方法。 std::span可以用于std::vector&#xff0c;std::array当然还有数组int []。 2. 使用例子 std::span它能自动的推导出容器的大小。 #include <iostream> #include <array> #include <vector>…

1. 简介

std::span提供了一种安全的访问线性连续数组的方法。

std::span可以用于std::vectorstd::array当然还有数组int []

2. 使用例子

std::span它能自动的推导出容器的大小。

#include <iostream>
#include <array>
#include <vector>
#include <span>int main()
{std::cout << std::endl;std::cout << std::boolalpha;std::vector myVec{1,2,3,4,5};std::span mySpan1{ myVec };std::span mySpan2{ myVec.data(), myVec.size()};bool spansEqual = std::equal( mySpan1.begin(), mySpan1.end(),mySpan2.begin(), mySpan2.end());std::cout << "mySpan1 == mySpan2: " << spansEqual << std::endl;int a[] = { 2,3,4,10};std::span mySpan3{ a };std::cout << mySpan3.size() << '\n';return 0;
}

同时能够使用data()来获取数据的原始指针,进而来修改变量。

std::spanstd::string_view有点类似,都可以看成一种

视图view,不过std::span它有修改数据的能力而string_view

没有。

但是比较坑的是,c++26之前std::span并不支持边界检查!!!

这意味着你仍然需要自己管理和检查边界。

下面的代码ptr[3]显然是越界了,但是程序的行为却是显示一个

垃圾值,这明显是一个未定义的行为。


#include <iostream>
#include <array>
#include <vector>
#include <span>int main()
{std::cout << std::endl;std::cout << std::boolalpha;int a[] = { 2,3,4,10};std::span mySpan3{ a };std::cout << mySpan3.size() << '\n';std::array<int,3> arr = { 6,5,4 };std::span mySpan4{ arr };auto ptr = mySpan4.data();std::cout << "mySpan4.size() = " << mySpan4.size() << '\n';std::cout << ptr[2] << '\n';std::cout << ptr[3] << '\n';return 0;
}

下面再给一个subspan的使用例子,其他的方法就不写了。

程序的意思是初始化一个0-19的数组,

再每5个连续数字输出一次。

// subspan.cpp#include <iostream>
#include <numeric>
#include <span>
#include <vector>int main() {std::cout << std::endl;std::vector<int> myVec(20);std::iota(myVec.begin(), myVec.end(), 0);                   // (1)for (auto v: myVec) std::cout << v << " ";std::cout << "\n\n";std::span<int> mySpan(myVec);                               // (2)auto length = mySpan.size();auto count = 5;                                             // (3)for (long unsigned int first = 0; first <= (length - count); first += count ) {for (auto ele: mySpan.subspan(first, count)) std::cout << ele << " ";std::cout << std::endl;}}

3. 参考

cppreference
moderncpp-span

http://www.dtcms.com/a/477869.html

相关文章:

  • 2025年 Varjo XR-4 升级新品发布!首款专为陆、海、空领域战备训练打造的XR头显
  • 【XR硬件系列】AR眼镜的终极形态会是“普通眼镜”吗?技术瓶颈还有哪些?
  • 发布自己的 jar 包到 Maven 中央仓库 ( mvnrepository.com )
  • 页表 vs. 组相联缓存:内存管理与性能优化的殊途同归
  • 泉州专业建站品牌校园门户网站开发需求分析
  • 版本控制器之Git理论与实战
  • 注册网站时应注意什么域名注册后 免费自建网站
  • wpf passwordbox控件 光标移到最后
  • Linux wlan网络协议栈-路由框架详解
  • 廊坊安次区网站建设公司上海高登联合建设网站
  • 凡科网站手机投票怎么做wordpress vr主题
  • 【ElasticSearch】text 和 keyword 类型区分
  • vue3的组件通信方式汇总
  • PortSwigger靶场之将 XSS 存储到onclick带有尖括号和双引号 HTML 编码以及单引号和反斜杠转义的事件中通关秘籍
  • 哪些方法可以建设网站后台网站模板下载
  • 根据PID获取K8S-Pod名称-反之POD名称获取PID
  • 做网站三年3万块钱论坛搭建一键
  • C#进阶技巧掌握外部进程的启动与控制(一):进程基础与基本操作
  • 昂瑞微:实现精准突破,攻坚射频“卡脖子”难题
  • 延安做网站的公司电话如何用云服务器搭建个人网站
  • shellSort
  • idea一直卡在build不动(Writing class)
  • LSTM自然语言处理情感分析项目(四)整合调用各类与方法形成主程序
  • MySQL为什么选择B+tree索引作为核心索引结构?
  • 在 Windows 11 上使用 JetBrains Rider 2025.2 创建 Avalonia 项目完整指南
  • 隐私保护与数据安全合规(十)
  • 【工业场景】用YOLOv8实现人员打电话识别
  • 丽水建设网站制作几年前我为客户建设网站
  • 主线程 MainLooper 和一般 Looper 的异同?
  • 【论文精读】STAR:基于文本到视频模型的空间-时间增强真实世界视频超分