C++编程法则365天一天一条(27)std::initializer_list 轻量级初始化列表

std::initializer_list是一个模板类,是一个轻量级的 const T 类型对象数组的代理对象。这意味着通过 initializer_list 访问的元素是只读的,你无法修改这些元素的值。可以简单理解为一个常量数组

它主要用于在构造函数中接收可变数量的同类型参数,以及支持统一初始化语法。

#include <iostream>
#include <vector>
#include <initializer_list>class MyContainer {
public:MyContainer(std::initializer_list<int> init) {for (int val : init) {data.push_back(val);}}void print() const {for (int val : data) {std::cout << val << " ";}std::cout << std::endl;}private:std::vector<int> data;
};int main() {MyContainer container = {1, 2, 3, 4, 5};container.print(); // 输出: 1 2 3 4 5return 0;
}

许多标准模板库(STL)容器(如 std::vector 和 std::set)都支持通过 initializer_list 进行初始化。

std::vector<int> vec = {1, 2, 3, 4, 5}; // 使用 initializer_list 初始化

使用 std::initializer_list 可以明确表达你的意图,表示这个构造函数专门用于处理一组初始化值。这种语义在代码可读性上是有帮助的。

当使用大括号括起来的初始化列表(brace-enclosed initializer list)与 auto 关键字结合时,会被推导为initializer_list类型。

auto a = {1};

a 并非int类型,而是initializer_list<int>类型。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (9) - 编译现有的AWTK应用程序

AWTK 应用程序开发完成后&#xff0c;在配置文件中添加 harmonyos 的选项&#xff0c;通过create_project.py脚本即可生成 DevEco Studio的工程。 安装开发环境 DevEco Studio HarmonyOS 的开发工具。 Python 运行环境。 git 源码管理工具。 下载 awtk 和 awtk-harmonyos…

如何创建备份设备以简化 SQL Server 备份过程?

SQL Server 中的备份设备是什么&#xff1f; 在 SQL Server 中&#xff0c;备份设备是用于存储备份数据的物理或逻辑介质。备份设备可以是文件、设备或其他存储介质。主要类型包括&#xff1a; 文件备份设备&#xff1a;通常是本地文件系统中的一个或多个文件。可以是 .bak 文…

Dependency: androidx.webkit:webkit:1.11.0-alpha02. 问题

android studio 打包后出现这个问题 1.步骤更新topOn sdk 添加 //Admob api “com.anythink.sdk:adapter-admob:6.4.18” api “com.google.android.gms:play-services-ads:23.4.0” api "com.google.android.gms:play-services-ads:23.4.0"sdk 中会出现打包编译报错…

ubuntu 20.04 NVIDIA驱动、cuda、cuDNN安装

1. NVIDIA驱动 系统设置->软件和更新->附加驱动->选择NVIDIA驱动->应用更改。该界面会自动根据电脑上的GPU显示推荐的NVIDIA显卡驱动。 运行nvidia-smi: NVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver. Make sure that the lat…

SpringBoot监控

1、Spring Boot Actuator 监控 Spring Boot Actuator 可以帮助监控和管理 Spring Boot 应用&#xff0c;比如健康检查、审计、统计和 HTTP 追踪等。所有的这些特性可以通过 JMX 或者 HTTP endpoints 来获得。 1、Actuator 监控应用程序 启用 Actuator 的端点&#xff0c;只要…

动态规划 —— dp 问题-粉刷房子

1. 剑指offer —— 粉刷房子 题目链接&#xff1a; LCR 091. 粉刷房子 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/JEj789/description/ 2. 题目解析 根据上图可以得到costs横坐标&#xff08;行&#xff09;是房子的号数&#xff0c;红色的下标是0&…

RPA是什么,RPA有什么作用?

在数字化转型的时代背景下&#xff0c;企业面临着提高效率、降低成本和优化流程的巨大压力。RPA作为一种革新性的数字化技术&#xff0c;迅速成为企业实现这些目标的利器。那么&#xff0c;RPA究竟是什么&#xff1f;它又能为企业带来哪些实际作用呢&#xff1f;本文金智维将对…

RAG(检索增强生成)的实现流程;RAG怎么实现检索增强的

目录 RAG(检索增强生成)的实现流程 两次使用大模型:可以不同 一、数据准备阶段 二、应用阶段 RAG怎么实现检索增强的 实现方式 具体举例 RAG(检索增强生成)的实现流程 两次使用大模型:可以不同

【ddnsgo+ipv6】

ddnsgoipv6 DNS解析添加记录ddnsgo配置 DNS解析添加记录 ddnsgo配置

【手撕排序2】快速排序

&#x1f343; 如果觉得本系列文章内容还不错&#xff0c;欢迎订阅&#x1f6a9; &#x1f38a;个人主页:小编的个人主页 &#x1f380; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 ✌️ &#x1f91e; &#x1f91f; &#x1f918; &#x1f919; &#x1f448; &…

Stable Diffusion的解读(一)

Stable Diffusion的解读&#xff08;一&#xff09; 文章目录 Stable Diffusion的解读&#xff08;一&#xff09;摘要Abstract一、机器学习部分1. Stable Diffusion的早期工作1.1 从编码器谈起1.2 第一条路线&#xff1a;VAE和DDPM1.3 第二条路线&#xff1a;VQVAE1.4 路线的交…

2024年该了解的常用渲染工具

随着图形技术和计算机科学的飞速发展&#xff0c;渲染工具在多个领域中的应用越来越广泛&#xff0c;包括影视特效、建筑设计、工业设计、游戏开发等。了解并掌握一些常用的渲染工具对于设计师和艺术家来说至关重要。 一、效果图建模及渲染软件 Autodesk 3ds Max 拥有强大的建…

解决 “Error: listen EACCES: permission denied 0.0.0.0:80“ 错误

前言 在开发过程中&#xff0c;我们经常会遇到各种各样的错误。其中一个常见的错误是 Error: listen EACCES: permission denied 0.0.0.0:80。这个错误通常发生在尝试启动一个开发服务器时&#xff0c;服务器试图绑定到80端口&#xff0c;但由于权限不足而失败。本文将详细介绍…

flink 内存配置(一):设置Flink进程内存

flink 内存配置&#xff08;一&#xff09;&#xff1a;设置Flink进程内存 flink 内存配置&#xff08;二&#xff09;&#xff1a;设置TaskManager内存 flink 内存配置&#xff08;三&#xff09;&#xff1a;设置JobManager内存 flink 内存配置&#xff08;四&#xff09;…

51c嵌入式~电路~合集14

我自己的原文哦~ https://blog.51cto.com/whaosoft/12443598 一、嵌入式开发中的滤波器设计 什么是滤波器&#xff1f; 各种传感器信号多多少少会携带一些噪声信号&#xff0c;那么通过滤波器就能够更好的降低和去除噪声&#xff0c;还原真实有用信号。 滤波器是一个电路&…

安卓图片的着色教程(tint的使用)

目录 基础夯实&#xff1a;一、Tint的定义与作用二、Tint的应用场景三、Tint的使用方法四、Tint的优势五、注意事项 使用教程&#xff1a;一、xml文件中使用tint效果展示完整代码 二、代码中使用tint效果展示完整代码 三、使图片的主题和背景反色效果展示完整代码 四、运行例程…

Vulnhub靶机——DC-4

#环境准备 dc-4靶机&#xff1a;网卡nat模式 192.168.200.144 kali攻击机&#xff1a;网卡nat模式 192.168.200.129 #渗透过程 #信息收集 老规矩&#xff0c;先用nmap看看有什么端口可以搞 还是一如既往的80和22 访问80端口是一个登录界面&#xff0c;一上来就让我进行爆…

以太网交换安全:MAC地址漂移

一、什么是MAC地址漂移&#xff1f; MAC地址漂移是指设备上一个VLAN内有两个端口学习到同一个MAC地址&#xff0c;后学习到的MAC地址表项覆盖原MAC地址表项的现象。 MAC地址漂移的定义与现象 基本定义&#xff1a;MAC地址漂移发生在一个VLAN内的两个不同端口学习到相同的MAC地…

.NET6中WPF项目添加System.Windows.Forms引用

.NET6中WPF项目添加System.Windows.Forms引用 .NET6的WPF自定义控件默认是不支持System.Windows.Forms引用的&#xff0c;需要添加这个引用方法如下&#xff1a; 1. 在项目浏览器中找到项目右击&#xff0c;选择编辑项目文件&#xff08;Edit Project File&#xff09;。 …

Docker安装XXL-JOB分布式调度任务

一、持久化 1、下载 xxl-job 源码,找到持久化脚本 2、创建 xxl-job 数据库,将上述文件中的脚本在本库执行即可 create database xxl_job charset utf8mb4 collate utf8mb4_general_ci; 二、安装 1、下载 xxl-job 镜像 docker pull xuxueli/xxl-job-admin:2.4.1 2、创建挂…