C++11特性--统一的列表初始化

个人主页:Lei宝啊 

愿所有美好如期而遇


{} 初始化及std:initializer_list

这种初始化方式我们建议用第一种,但是以后看见下面两种也不要感到疑惑,是可以这样初始化的。

int main()
{int a = 1;int b = { 1 };int c{ 1 };return 0;
}

二 

class Date
{
public:Date(){}Date(int year, int month, int day):_year(year),_month(month),_day(day){}private:size_t _year;size_t _month;size_t _day;};int main()
{Date a;Date b(1, 1, 1);Date c{ 1,1,1 };//多参数的隐式类型转换,{1,1,1}构造一个Date类型的临时对象,去拷贝构造d对象。Date d = { 1,1,1 };return 0;
}

三 

#include <vector>
using namespace std;int main()
{//与Date是不同的,这里不是多参数隐式类型转换,//是C++11特性,添加了initializer_list构造函数/*底层是这样的vector(initializer_list<value_type> il){for(auto &e : il){*finish = e;finish++;}}	*/vector<int> v = { 1,2,3,4,5,6 };vector<int> v{ 1,2,3,4,5,6 };return 0;
}

initializer_list构造是这样的:

{1,2,3}会被识别构造成initializer_list,并且是唯一构造,只有这么一种构造方式。

四 

#include <map>
using namespace std;int main()
{map<string, int> m1;pair<string, int> p;pair<string, int> p1;//initializer_list<pair<const string,int>>map<string, int> m2{ p, p1 };//initializer_list<pair<const char*,int>>//{"1",1}构造pair --> pair<const cha*, int>/*template<T1, T2>struct pair{pair(const T& key, const T& value):fisrt(key),second(value){}template<U, V>pair(pair<const U, V>& kv):first(kv.first),second(kv.second){}//使用const char*构造stringT1 first;T2 second;}*///这样再构造initializer_list,再用这个对象拷贝构造map<string, int> m3{ {"1",1},{"2",2} };return 0;
}

value_type在这里是pair<const Key, T>类型

解释map<string,int> m2 {p1, p2}:

p1和p2都是pair<string, int>类型,所以initializer_list中的value_type就是pair<string,int>类型,那么构造m2的就是iniializer_list<pair<string,int>>。

解释map<string, int> m3{ {"1",1},{"2",2} };

initializer_list中的value_type就是{"1",1}的类型,使用它去构造一个pair,那么pair的类型就是pair<const char*, int>,那么value_type就是这个类型,也就是说,我们使用initializer_list<pair<const char*,int>>去构造m3,而m3中pair的类型是pair<string,int>,无法直接构造,所以使用了类模板,将const char*构造成string。

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

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

相关文章

【Flutter 面试题】讲解一下Flutter中的动画和过渡效果

【Flutter 面试题】讲解一下Flutter中的动画和过渡效果 文章目录 写在前面口述回答补充说明运行结果详细说明 写在前面 &#x1f64b; 关于我 &#xff0c;小雨青年 &#x1f449; CSDN博客专家&#xff0c;GitChat专栏作者&#xff0c;阿里云社区专家博主&#xff0c;51CTO专…

Facebook如何使用增强技术提升广告效果?

AR in AD - case study 脸书2021年宣布了引入AR的新方法&#xff0c;以推动其应用套件中的产品发现和购买。但他们首先考虑是技术。据脸书称&#xff0c;技术一直是增强现实在其应用程序中更广泛使用的主要障碍。这就是为什么它现在正在做出改变&#xff0c;使企业主和广告商更…

第九届蓝桥杯大赛个人赛省赛(软件类)真题C 语言 A 组-第几个幸运数字

幸运数字是可以被3,5,7任一整除的数字&#xff0c;列举小明号码内的所有可能组合并计数。注意别忘了把1占的一位减去。 #include<stdio.h> typedef long long ll; int main(){long long ans 0, n 59084709587505LL;for(ll i 1; i < n; i * 3){//计算小于等于n的数…

22.保护性暂停扩展(一对一)

如果需要多个类之间使用GuardedObject对象&#xff0c;作为参数传递不是很方便&#xff0c;因此设计一个解耦的中间类&#xff0c;这样不仅能够解耦结果的等待者和结果生产者&#xff0c;还能够支持多个任务的管理。 Futures就好比居民楼一层的信箱&#xff0c;每个信箱有房间的…

玩具蛇(蓝桥杯)

文章目录 玩具蛇题目描述答案&#xff1a;552dfs 玩具蛇 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小蓝有一条玩具蛇&#xff0c;一共有 16 节&#xff0c;上面标着数字 1 至 16。每一节都是一个正方形的形…

蓝桥杯算法心得——附近最小(优先队列+滑动窗口)

大家好&#xff0c;我是晴天学长&#xff0c;这题可以用贪心优先队列和滑动窗口来写&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .附近最小 问题描述 小蓝有—个序列a[1], a[2],...,a[n]。 给定—个…

单目深度估计基础理论和论文学习总结

单目深度估计基础理论和论文学习总结 一、背景知识&#xff1a; 三维刚体运动的数学表示&#xff1a;旋转平移矩阵、旋转向量、欧拉角、四元数、轴角模型、齐次坐标、各种变换等 照相机模型&#xff1a;单目/双目模型&#xff0c;单目中的世界坐标系/相机坐标系/图像坐标系的…

一、初识 Web3

瑾以此系列文章&#xff0c;献给那些出于好奇并且想要学习这方面知识的开发者们 在多数时间里&#xff0c;我们对 web3 的理解是非常模糊的 就好比提及什么是 web1 以及 web2&#xff0c;相关概念的解释是&#xff1a; 1. 从 Web3 的开始 Web3&#xff0c;也被称为Web3.0&…

【排序算法】插入排序与选择排序详解

文章目录 &#x1f4dd;选择排序是什么&#xff1f;&#x1f320;选择排序思路&#x1f309; 直接选择排序&#x1f320;选择排序优化&#x1f320;优化方法&#x1f309;排序优化后问题 &#x1f320;选择排序效率特性 &#x1f309;插入排序&#x1f320;插入排序实现 &#…

shardingsphere-elastic-job-ui 管理界面安装

shardingsphere-elasticjob 从 3.0.0-alpha 版本开始&#xff0c;将console管理界面单独拆分出来 下载前需要 安装 maven 配置环境变量 安装 nodejs 配置环境变量 下载ui源码,安装 官方并未直接提供可执行的二进制文件,需要下载源码编译,目前发行版 3.0.2 https://github.com/…

修改网站源码,给电子商城的商品添加图片时商品id为0的原因

修改网站源码&#xff0c;给电子商城的商品添加图片时商品id为0的原因。花了几个小时查找原因。后来&#xff0c;由于PictureControl.class.php是复制CourseControl.class.php而来&#xff0c;于是对比了这两个文件&#xff0c;在CourseControl.class.php找到了不一样的关键几条…

探索AI大模型学习的未来发展与挑战

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 AI大模型学习的理论基础 AI大模型的训练与优化 AI大模型在特定领域的应用 AI大模型学习的伦理与社会影响 未来发展趋势与挑…

T2I diffusion模型是零样本分类器笔记

1 tle Text-to-Image Diffusion Models are Zero-Shot Classifiers&#xff08;Kevin Clark, Priyank Jaini&#xff09;【NeurIPS Proceedings 2023】 2 Conclusion This study investigates diffusion models by proposing a method for evaluating them as zero-shot class…

基于nodejs+vue学生作业管理系统python-flask-django-php

他们不仅希望页面简单大方&#xff0c;还希望操作方便&#xff0c;可以快速锁定他们需要的线上管理方式。基于这种情况&#xff0c;我们需要这样一个界面简单大方、功能齐全的系统来解决用户问题&#xff0c;满足用户需求。 课题主要分为三大模块&#xff1a;即管理员模块和学生…

EDR下的线程安全

文章目录 前记进程断链回调执行纤程内存属性修改early birdMapping后记reference 前记 触发EDR远程线程扫描关键api&#xff1a;createprocess、createremotethread、void&#xff08;指针&#xff09;、createthread 为了更加的opsec&#xff0c;尽量采取别的方式执行恶意代…

第十节HarmonyOS 常用容器组件3-GridRow

1、描述 栅格容器组件&#xff0c;仅可以和栅格子组件&#xff08;GridCol&#xff09;在栅格布局场景中使用。 2、子组件 可以包含GridCol子组件。 3、接口 GridRow(options:{columns: number | GridRowColumnOption, gutter?: Length | GutterOption, Breakpoints?: B…

SpringBoot 3整合Elasticsearch 8

这里写自定义目录标题 版本说明spring boot POM依赖application.yml配置新建模型映射Repository简单测试完整项目文件目录结构windows下elasticsearch安装配置 版本说明 官网说明 本文使用最新的版本 springboot: 3.2.3 spring-data elasticsearch: 5.2.3 elasticsearch: 8.1…

jvm(虚拟机)运行时数据区域介绍

Java虚拟机&#xff08;JVM&#xff09;运行时数据区域是Java程序在运行过程中使用的内存区域&#xff0c;它主要包括以下几个部分&#xff1a; 程序计数器&#xff08;Program Counter Register&#xff09;&#xff1a; 程序计数器是一块较小的内存区域&#xff0c;是线程私有…

AI新工具 视频迁移升级中国水墨画风格2.0;新颖的视频编辑框架提示编辑,风格转移,身份操控都不在话下;提取多种风格人脸草图

✨ 1: DomoAI 升级中国水墨画风格2.0 DomoAI是一个多功能的AI视频处理工具&#xff0c;可以将视频转换成多种风格&#xff0c;包括日本动漫、3D卡通、漫画和像素风格等。用户只需上传原始视频&#xff0c;通过简单的操作就能实现风格转换&#xff0c;制作出具有个性的高质量视…

【C++】虚拟继承 组合

目录 一、虚拟继承 &#x1f31f;【非虚拟内存分布】 &#x1f31f;【虚拟继承内存分布】 &#x1f31f;【虚拟继承读取】 &#x1f31f;【练习检验】 &#x1f31f;【继承的总结和反思】 二、组合 &#x1f31f;【继承和组合】 &#x1f31f;【前言回顾】 上一篇文章我们…