C++20中的基于范围的for循环(range-based for loop)

server/2024/9/20 8:57:29/ 标签: c++20 for

      C++11中引入了对基于范围的for循环(range-based for loop)的支持:该循环对一系列值(例如容器中的所有元素)进行操作。代码段如下:

const std::vector<int> vec{ 1,2,3,4,5 };
for (const auto& i : vec)std::cout << i << ", ";
std::cout << std::endl;

      C++17中增加对结构化绑定(structured bingding)声明的支持。代码段如下:

std::map<int, int> m{ {1,-1}, {2,-2}, {3,-3} };
for (const auto& [key, value] : m)std::cout << key << "," << value << "; ";
std::cout << std::endl;

      C++20中增加支持声明任意多个变量,必须以分号结尾。代码段如下:

const std::vector<int> vec{ 1,2,3,4,5 };
for (auto n = vec.size(), m = static_cast<size_t>(0); const auto & i : vec)std::cout << --n + i << "," << ++m << "; ";
std::cout << std::endl;for (const auto vec = std::vector{ -1,-2,-3,-4,-5 }; const auto& i : vec)std::cout << i << ", ";
std::cout << std::endl;

      以下为完整测试代码:

int test_for_20()
{const std::vector<int> vec{ 1,2,3,4,5 };// C++11for (const auto& i : vec)std::cout << i << ", ";std::cout << std::endl;// C++17std::map<int, int> m{ {1,-1}, {2,-2}, {3,-3} };for (const auto& [key, value] : m)std::cout << key << "," << value << "; ";std::cout << std::endl;// C++20for (auto n = vec.size(), m = static_cast<size_t>(0); const auto & i : vec)std::cout << --n + i << "," << ++m << "; ";std::cout << std::endl;for (const auto vec = std::vector{ -1,-2,-3,-4,-5 }; const auto& i : vec)std::cout << i << ", ";std::cout << std::endl;return 0;
}

      执行结果如下图所示:

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


http://www.ppmy.cn/server/58236.html

相关文章

IP-Guard定制函数配置说明

设置客户端配置屏蔽&#xff1a; 关键字&#xff1a;disfunc_austascrtrd 内容&#xff1a;1 策略效果&#xff1a;屏幕整个屏幕监控模块。会导致屏幕历史查询这个功能也不能使用。 security_proxy1 安全代理参数 safe_enforce_authproc进程 强制软件上 安全代理网关&#xf…

开源协作wiki和文档软件Docmost

什么是 Docmost &#xff1f; Docmost 是一款开源协作 wiki 和文档软件。它是 Confluence 和 Notion 等软件的开源替代品。使用 Docmost 可以无缝创建、协作和共享知识。非常适合管理您的 wiki、知识库、文档等。目前 Docmost 处于测试阶段。 软件的主要特点 安装 在群晖上以 …

javascript 处理###分隔的字符串

在 JavaScript 中&#xff0c;可以使用 split 方法将字符串按 ### 分隔成数组。以下是一个示例代码&#xff0c;展示了如何处理由 ### 分隔的字符串&#xff1a; 示例代码 // 示例字符串 let str "part1###part2###part3###part4";// 使用 split 方法按 ### 分隔字…

C#常用关键字举例

关键字是 C# 编译器预定义的保留字。这些关键字不能用作标识符&#xff0c;但是&#xff0c;如果您想使用这些关键字作为标识符&#xff0c;可以在关键字前面加上 字符作为前缀。 class: public class MyClass {// Class definition }interface: public interface IMyInterfac…

前端javascript中的排序算法之冒泡排序

冒泡排序&#xff08;Bubble Sort&#xff09;基本思想&#xff1a; 经过多次迭代&#xff0c;通过相邻元素之间的比较与交换&#xff0c;使值较小的元素逐步从后面移到前面&#xff0c;值较大的元素从前面移到后面。 大数据往上冒泡&#xff0c;小数据往下沉&#xff0c;也就是…

数据库基础

数据库基础 概念 数据库&#xff1a;存储数据的仓库 数据库管理系统&#xff1a;操作和管理数据库的软件。 SQL&#xff1a;操作关系型数据库的编程语言&#xff0c;定义了一系列标准。 关系型数据库&#xff1a;建立在关系模型基础上&#xff0c;由多张相互连接的二维表组…

搭建基础库~

前言 项目中会用到工具库、函数库以及一些跟框架绑定的组件&#xff0c;如果这些基础模块每个项目都实现一套&#xff0c;维护起来那真的头大&#xff0c;你说呢&#x1f609; 搭建流程 准备工作 创建文件夹myLib、安装Git以及pnpm 目录大概就系这样子&#xff1a; myLib ├…

如何实现跨域

目录 JSONP (JSON with Padding) CORS (Cross-Origin Resource Sharing) Nginx代理 Node.js中间件代理 Vue axios实现(或其他前端HTTP库) 原生JS、jQuery Ajax等其他方式 跨域实现是Web开发中常见的需求,主要涉及到不同源(协议、域名、端口三者之一不同即为不同源)之…

docker安装tomcat容器

docker安装tomcat容器 1、拉取镜像 docker pull tomcat:8.5.46-jdk8-openjdk2、运行 docker run -d --name tomcat tomcat:8.5.46-jdk8-openjdk ​ docker cp tomcat:/usr/local/tomcat/conf /data/tomcat/ ​ docker rm -f tomcat ​ docker run -d --name tomcat -p 8…

基于YOLOv9的脑肿瘤区域检测

数据集 脑肿瘤区域检测&#xff0c;我们直接采用kaggle公开数据集&#xff0c;Br35H 数据中已对医学图像中脑肿瘤位置进行标注 数据集我已经按照YOLO格式配置好&#xff0c;数据内容如下 数据集中共包含700张图像&#xff0c;其中训练集500张&#xff0c;验证集200张 模型训…

从数据仓库到数据湖(上):数据湖导论

文章目录 一、什么是数据湖&#xff1f;起源数据湖的特征 二、为什么要用数据湖&#xff1f;三、数据湖与数据仓库的区别数据仓库和数据湖的对比 四、数据湖本质数据存储架构数据处理工具&#xff1a;三类第一类工具第二类工具第三类工具 小结 五、总结六、参考资料 一、什么是…

TCP协议深入解析

引言 TCP(Transmission Control Protocol,传输控制协议)是互联网中最重要的协议之一,它为上层应用提供可靠的端到端数据传输服务。TCP协议的设计非常精巧,包含了许多复杂而巧妙的机制。下面让我们一起深入探讨TCP协议的工作原理。 一. TCP连接的建立和断开 连接建立:TCP使用三…

【Sql Server】sql server 2019设置远程访问,外网服务器需要设置好安全组入方向规则

大家好&#xff0c;我是全栈小5&#xff0c;欢迎来到《小5讲堂》。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言1、无法链接…

如何压缩pdf文件大小,怎么压缩pdf文件大小

在数字化时代&#xff0c;pdf文件因其稳定的格式和跨平台兼容性&#xff0c;成为了工作与学习中不可或缺的一部分。然而&#xff0c;随着pdf文件内容的丰富&#xff0c;pdf文件的体积也随之增大&#xff0c;给传输和存储带来了不少挑战。本文将深入探讨如何高效压缩pdf文件大小…

掌握这五大关键,轻松驾驭AI大模型项目落地

随着AI技术的蓬勃发展&#xff0c;众多企业纷纷投身于大模型项目的浪潮中&#xff0c;力求在这场技术革新中占据一席之地。然而&#xff0c;成功与失败并存&#xff0c;背后的原因引人深思。本文将为您揭示五大关键因素&#xff0c;助您轻松驾驭AI大模型项目的落地过程。 一、…

WebOffice在线编微软Offfice,并以二进制流的形式打开Word文档

在日常办公场景中&#xff0c;我们经常会遇到这种场景&#xff1a;我们的合同管理系统的各种Word,excel,ppt数据都是以二进制数组的形式存储在数据库中&#xff0c;如何从数据库中读取二进制数据&#xff0c;以二进制数据作为参数&#xff0c;然后加载到浏览器的Office窗口&…

bash shell 重定向输入和输出

shell 提供的重定向操作符 操作符作用>将命令的输出发到一个文件中如果文件存在&#xff0c;则新的文件数据会覆盖已经存在的文件>>将命令的输出追加到一有文件如果文件不存在&#xff0c;则创建新的文件<将文件内容重定向到命令<<内联输入重定向(inline in…

axios的使用,处理请求和响应,axios拦截器

1、axios官网 https://www.axios-http.cn/docs/interceptors 2、安装 npm install axios 3、在onMouunted钩子函数中使用axios来发送请求&#xff0c;接受响应 4.出现的问题&#xff1a; &#xff08;1&#xff09; 但是如果发送请求请求时间过长&#xff0c;回出现请求待处…

Oracle的wrap工具怎么用

Oracle的Wrap工具是一个用于加密PL/SQL代码&#xff08;如存储过程、函数、包等&#xff09;的工具。使用Wrap工具加密后的代码变得难以阅读&#xff0c;但Oracle数据库仍然能够执行这些加密后的代码。以下是Oracle Wrap工具的基本使用方法&#xff1a; 一、准备工作 确认Wra…

【网络安全科普】网络安全指南请查收

随着社会信息化深入发展&#xff0c;互联网对人类文明进步奖发挥更大的促进作用。但与此同时&#xff0c;互联网领域的问题也日益凸显。网络犯罪、网络监听、网络攻击等是又发生&#xff0c;网络安全与每个人都息息相关&#xff0c;下面&#xff0c;一起来了解网络安全知识吧。…