C++ initializer_list类型推导

devtools/2024/9/22 23:09:21/

目录

initializer_list

C++自动类型推断

auto

typeid

decltype


initializer_list<T>

C++支持统一初始化{ },出现了一个新的类型initializer_list<T>,一切类型都可以用列表初始化。提供了一种更加灵活、安全和明确的方式来初始化对象。

class Date
{
public:Date(int year,int month,int days):_year(year),_month(month),_days(days){}
private:int _year;int _month;int _days;
};
int main()
{//{}列表初始化(统一初始化)int a { 10};int b = { 10 };char c={'x'};int arr[3] = { 1,2,3 };string s{"hello world"};Date d1(2022,1,2);//C++98的初始化方式Date d2{ 2019,2,3 };//C++11的列表初始化Date d3 ={ 2023,7,1 };//{2023,7,1}隐式类型转换->临时对象->d3拷贝构造vector<int> v = { 1,2,3,4,5,6 };C++11的列表初始化,vector具有形参类型是initializer_list的构造函数list<int> li = { 1,2,3 };return 0;
}

initializer_list结构

创建一个initializer_list,并遍历:

initializer_list<int> il = { 1,2,3 };
initializer_list<int>::iterator it = il.begin();
while (it != il.end())
{cout << *it << endl;++it;
}

可以将initializer_list作为容器构造函数的形参类型来初始化容器,例如:

C++自动类型推断

auto

通过auto关键字可以使程序员在写一些长度较长的类型名时免去拼写,使用auto来代替,auto会自动推导出等号右边的类型。

vector<int> v;
auto it = v.begin();//auto自动推导迭代器类型
//本来需要这样写vector<int>::iterator it=v.begin();

typeid

cout << typeid(v).name() << endl;//打印出类型的字符串

decltype

使用推导出来的类型定义新的变量


http://www.ppmy.cn/devtools/56751.html

相关文章

qcom 平台SSR (Subsystem Restart)配置

qcom 平台如何配置不同子系统重启模式 SSR (Subsystem Restart) restart level 一、SSR level 说明&#xff1a; 在配置和使用subsystem restart level时&#xff0c;不同级别的restart level有如下几种&#xff1a; No SSR (Subsystem Restart)&#xff1a; 设置值&#xff1…

微信小程序-插槽slot

一.插槽slot 在页面使用自定义组件的时候&#xff0c;如果在自定义组件里面写子组件&#xff0c;子组件的内容无法显示。 <custom01> <text slotslot-top>你好&#xff0c;上方组件</text> 你好&#xff0c;组件 <text slotslot-bottom>你好&#xf…

python ----- xml 命名空间与xpath详解

一、简介 本文章以如下xml 样例进行讲解命名空间和xpath xml_text"""<?xml version"1.0"?><actors xmlns:fictional"http://characters.example.com"xmlns"http://people.example.com"><actor><name>…

(十七)如何学习统计学基础知识(学习路线)

统计学是数据科学的基本支柱。统计学的目的是帮助你理解数据并从中得出有意义的结论。在数据科学中&#xff0c;统计学在理解数据模式和趋势、做出预测和检验假设方面起着至关重要的作用。 (一) 数据科学统计学习路线图 本文为学习统计学并将其应用于数据科学提供了清晰、结构化…

钉钉开放AI生态战略的真正价值到底是什么?很多人都没看懂

来源&#xff1a; 首席数智官 hello 大家好&#xff0c;我们是数字化领军者都在看的首席数智官。 关注我&#xff0c;每天给你讲一个商业案例。 今天我们要给你讲的是&#xff1a;钉钉开放AI大模型生态的战略意义到底是什么&#xff1f; 「谁先赢得苹果&#xff0c;谁就赢得…

MSPG3507——蓝牙接收数据显示在OLED,滴答定时器延时500MS

#include "ti_msp_dl_config.h" #include "OLED.h" #include "stdio.h"volatile unsigned int delay_times 0;//搭配滴答定时器实现的精确ms延时 void delay_ms(unsigned int ms) {delay_times ms;while( delay_times ! 0 ); } int a0; …

《妃梦千年》第二十章:风雨欲来

第二十章&#xff1a;风雨欲来 战斗的胜利让林清婉和皇上的关系更加亲密&#xff0c;但宫中的阴谋却并未因此而停止。一天&#xff0c;林清婉正在寝宫中思考未来的对策&#xff0c;忽然接到一个紧急消息。小翠匆匆跑来&#xff0c;神色紧张&#xff1a;“娘娘&#xff0c;太后…

【Android面试八股文】你说你使用Leakcanary进行内存泄漏检测,那你能说一说Leakcanary的原理吗?

文章目录 一、 Java四大引用二、 LeakCanary示例工作机制注意事项三、 Leakcanary的原理四、 Leakcanary的源码分析LeakCanary#Install创建RefWatcherAndroidRefWatcherBuilder#buildAndInstall监听Activity的引用 : ActivityRefWatcher检查引用Dump Heap解析hprof定位泄露的引…