C++20中头文件span的使用

      <span>是C++20中新增加的头文件,此头文件是containers库的一部分。包括:

      1.模板类std::span:连续对象序列的非拥有视图(view)。std::span可以具有static extent,在这种情况下,序列中的元素数量在编译时已知并以type进行编码,或者具有dynamic extent。

int test_span_span()
{
	int a[]{ 8, 7, 6 };
	std::span<int> sp1(a);
	std::cout << sp1.front() << "," << sp1.back() << "," << sp1[1] << "," << *sp1.data() << std::endl; // 8,6,7,8

	auto print = [](auto sp) {
		for (auto v : sp)
			std::cout << v << ",";
		std::cout << std::endl;
	};

	std::vector<int> vec{ 0, 1, 2, 3, 4, 5, 6, 7, 8 };
	std::span<int> sp2(vec.data()+1, 6);
	print(sp2); // 1,2,3,4,5,6,
	std::cout << sp2.size() << "," << sp2.size_bytes() << "," << sp2.empty() << std::endl; // 6,24,0

	std::span<int> sp3 = sp2.subspan(1, 4);
	print(sp3); // 2,3,4,5,

	auto sp4 = sp3.first<3>();
	print(sp4); // 2,3,4,

	auto extent = [](auto sp) {
		if (std::dynamic_extent == sp.extent)
			std::cout << "dynamic extent:" << sp.extent << std::endl;
		else
			std::cout << "static extent:" << sp.extent << std::endl;
	};

	auto sp5 = sp3.last<3>();
	print(sp5); // 3,4,5,
	extent(sp5); // static extent:3

	std::span<int, std::dynamic_extent> sp6{ vec };
	extent(sp6); // dynamic extent:18446744073709551615

	return 0;
}

      执行结果如下图所示:

      2.函数:

      (1).std::begin, std::cbegin:返回容器或数组开头的迭代器。

      (2).std::end, std::cend:返回容器或数组末尾的迭代器。

      (3).std::rbegin, std::crbegin:返回容器或数组开头的反向迭代器。

      (4).std::rend, std::crend:返回容器或数组的反向结束迭代器。

      (5).std::size, std::ssize:返回容器或数组的大小。其中ssize为signed size

      (6).std::data:获取指向底层数组(underlying array)的指针。不能用于空容器或空数组

      (7).std::empty:检查容器是否为空。

int test_span_functions()
{
	std::vector<int> vec{ 3, 1, 4, 6, 8 };

	std::cout << *std::begin(vec) << "," << *(std::end(vec)-1) << std::endl; // 3,8
	std::cout << *std::crbegin(vec) << "," << *(std::crend(vec) - 1) << std::endl; // 8,3

	std::cout << std::size(vec) << "," << std::ssize(vec) << std::endl; // 5,5

	std::string s{ "Hello world!" };
	char a[20]; // storage for a C-style string
	std::strcpy(a, std::data(s));
	std::cout << a << std::endl; // Hello world!

	std::cout << std::empty(vec) << std::endl; // 0
	vec.clear(); 
	std::cout << std::empty(vec) << std::endl; // 1

	return 0;
}

      执行结果如下图所示:

      GitHub:https://github.com/fengbingchun/Messy_Test

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/895939.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FPGA实现PCIE采集电脑端视频转SFP光口UDP输出,基于XDMA+GTX架构,提供4套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案1G/2.5G Ethernet Subsystem实现物理层方案1G/2.5G Ethernet PCS/PMA or SGMII Tri Mode Ethernet MAC实现物理层方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频PCIE视频采集QT上位机X…

视频转文字工具搜集

视频转文字工具是一种能够将视频中的音频内容转化为文字的软件或在线服务。这类工具通常支持多种视频格式和语言&#xff0c;适用于不同的场景和需求。以下是一些推荐的视频转文字工具及其特点&#xff1a; 媒关系&#xff1a;这是一款免费的视频转文字工具&#xff0c;支持多种…

THP4 SOP16 芯片 高速光耦芯片

光电耦合器输入端加电信号使发光源发光&#xff0c;光的强度取决于激励电流的大小&#xff0c;此光照射到封装在一起的受光器上后&#xff0c;因光电效应而产生了光电流&#xff0c;由受光器输出端引出&#xff0c;这样就实现了电一光一电的转换。 由于光耦合器输入输出间互相…

k8s ETCD数据备份与恢复

在 Kubernetes 集群中&#xff0c;etcd 是一个分布式键值存储&#xff0c;它保存着整个集群的状态&#xff0c;包括节点、Pod、ConfigMap、Secrets 等关键信息。因此&#xff0c;定期对 etcd 进行备份是非常重要的&#xff0c;特别是在集群发生故障或需要恢复数据的情况下。本文…

完美搭建web自动化环境

在快速发展的科技时代&#xff0c;自动化测试已成为提高软件质量和开发效率的关键。今天&#xff0c;我们将揭示如何使用Java语言完美搭建Web自动化环境&#xff0c;为你的测试之旅打下坚实的基础&#xff01; 你是否在为搭建一个稳定高效的Web自动化测试环境而感到困惑&#…

DS快速排序和归并排序的非递归实现(16)

文章目录 前言一、快排的非递归实现二、归排的非递归实现总结 前言 打破递归桎梏&#xff0c;迎接迭代解放&#xff01; 一、快排的非递归实现 我们要替代递归&#xff0c;就要用到迭代或者循环&#xff0c;也就是说&#xff0c;其核心思想是不变的&#xff0c;只是换一种方式来…

VMware:Windows主机与CentOS虚拟机文件互传文件共享

注意&#xff1a;本文使用Win10与VMware17pro互传 1. 本地创建文件夹 如下图创建一个文件夹&#xff0c;名字任意 2. 设置本地文件夹权限 右键文件夹 - - 属性 - - 共享 - - 高级共享 - - 权限 - - 如下图全部勾选 - - 应用 - - 确认 3. VMware中设置共享文件夹路径 第一步…

宿主机无法通过WinSCP连接虚拟机

排查步骤 1. 检查虚拟机是否启用了 SSH 服务 WinSCP 连接虚拟机需要 SSH 服务在虚拟机中运行。 检查 SSH 服务状态&#xff1a; 在虚拟机中执行以下命令&#xff1a;sudo systemctl status ssh 如果 SSH 服务未启动&#xff1a; sudo systemctl start ssh sudo systemct…

测试睡眠质量的app免费

测试睡眠质量的app免费&#xff0c;在快节奏的现代社会中&#xff0c;优质的睡眠对我们的身体健康和精神状态都至关重要。然而&#xff0c;许多人却面临睡眠质量不佳的问题。为了帮助大家更好地了解自己的睡眠状况&#xff0c;我们将介绍十款免费的睡眠质量测试APP&#xff0c;…

C#学习笔记(十一)

C#学习笔记&#xff08;十一&#xff09; 第八章 垃圾回收机制GC与类的静态方法一、垃圾回收机制GC1. 对象如何被销毁的 二、类的静态方法1. 静态方法的使用2. 为什么会报错2.1 静态方法定义中的报错2.2 方法使用中的报错 3. 什么情况下用静态 第八章 垃圾回收机制GC与类的静态…

CSS 居中那些事

一、父子元素高度确定 简单粗暴, 直接通过设置合适的 padding 或 margin 实现居中 <style>.p {padding: 20px 0;background: rgba(255, 0, 0, 0.1);}.c {width: 40px;height: 20px;background: blue;} </style> <div class"p"><div class"…

第 5 章:vuex

1. 理解 vuex vuex 是什么&#xff1a; 概念&#xff1a;专门在 Vue 中实现集中式状态&#xff08;数据&#xff09;管理的一个 Vue 插件&#xff0c;对 vue 应用中多个组件的共享状态进行集中式的管理&#xff08;读/写&#xff09;&#xff0c;也是一种组件间通信的方式&am…

多IP访问浏览器

添加多个ip地址 nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.61.100/24 ipv4.addresses 192.168.61.200/24 ipv4.addresses 192.168.61.128 ipv4.gateway 192.168.61.2 ipv4.dns 114.114.114.114

linux多窗口调试一些常用命令

在 vim 或 neovim 中使用分屏移动光标的方式&#xff1a; 希望光标从左窗口移动到右侧窗口&#xff1a; 按 Ctrlw 然后按 l&#xff08;小写的 L&#xff09;&#xff0c;光标就会从左边窗口移动到右边窗口。 其它分屏操作&#xff1a; Ctrlw h&#xff1a;移动到左边的窗…

民宿在线预订:SpringBoot技术实践指南

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

【VUE小型网站开发】初始环境搭建

1. 初始化VUE项目 1.1 创建vue项目 1.2 删除多余的界面 根据自己情况删除红框内的文件 清理app页面代码 1.3 引入vue-router 1.3.1 下载vue-router npm install vue-router1.3.2 配置vue-router 在 main.js 或 main.ts 中引入 vue-router import ./assets/main.css im…

MySQL-28.事务-介绍与操作

一.为什么需要事务 -- 事务 -- 删除部门 delete from tb_dept where id 1;-- 删除部门下的员工 delete from tb_emp where dept_id 1; 这样的话就可以成功删除&#xff0c;但是有一个问题&#xff1a;如果部门id1的被成功删除了&#xff0c;但是部门下的员工在删除时出错了…

各种查询sql介绍

1. 关联查询&#xff08;JOIN&#xff09; 关联查询用于从多个表中检索数据。它基于两个或多个表之间的共同字段&#xff08;通常是主键和外键&#xff09;来组合数据。 内连接&#xff08;INNER JOIN&#xff09;&#xff1a; sql SELECT a.name, b.order_date FROM custome…

git add操作,文件数量太多卡咋办呢,

git add介绍 Git的add命令是用于将文件或目录添加到暂存区&#xff08;也就是索引库&#xff09;&#xff0c;以便在后续的提交&#xff08;commit&#xff09;操作中一并上传到版本库的。具体来说&#xff0c;git add命令有以下几种常见用法&#xff1a; 添加单个文件&#…

【每日一题】24.10.14 - 24.10.20

10.14 直角三角形1. 题目2. 解题思路3. 代码实现&#xff08;AC_Code&#xff09; 10.15 回文判定1. 题目2. 解题思路3. 代码实现&#xff08;AC_Code&#xff09; 10.16 二次方程1. 题目2. 解题思路3. 代码实现&#xff08;AC_Code&#xff09; 10.17 互质1. 题目2. 解题思路3…