C++ list initialization

  • list initialization
  • 參考連結

list initialization

list initialization是C++11引入的一項特性,其官方定義為: Initializes an object from braced-init-list,即使用大括號內的值來初始化變數。

與使用=來進行初始化所不同的是,使用list initialization時,會自動檢查是否有"narrowing"的情況發生,如果有,在編譯時就會拋出錯誤。

這裡所謂的narrowing指的是將佔用byte數較多的型別轉換為佔用byte數較少的型別。

嘗試編譯以下程序:

#include <iostream>int main(){int x{6.7};return 0;
}

會出現以下錯誤:

list_initialization.cpp: In function ‘int main()’:
list_initialization.cpp:4:14: error: narrowing conversion of ‘6.7000000000000002e+0’ from ‘double’ to ‘int’ inside { } [-Wnarrowing]int x{6.7};^

也就是說6.7double型別的,不應該被拿去初始化一個int型別的變數。

以下是在TensorRT/samples/common/common.h中的函數locateFile,當中便使用了list initiliazation來對以下兩個局域變數做初始化:

inline std::string locateFile(const std::string& filepathSuffix, const std::vector<std::string>& directories)
{const int MAX_DEPTH{10};bool found{false};//...
}

除了C++固有的型別外,在初始化自訂義的類別時也可以用list initialization。如在TensorRT/samples/common/logger.cpp中,同樣是使用list initialization來初始化gLogger這個物件:

//Logger建構子:Logger(Severity severity = Severity::kWARNING)
Logger gLogger{Logger::Severity::kINFO};

參考連結

list initialization (since C++11)

Why is list initialization (using curly braces) better than the alternatives?

C++ list initialization相关推荐

  1. pytorch系列 -- 9 pytorch nn.init 中实现的初始化函数 uniform, normal, const, Xavier, He initialization...

    本文内容: 1. Xavier 初始化 2. nn.init 中各种初始化函数 3. He 初始化 torch.init https://pytorch.org/docs/stable/nn.html ...

  2. 单例模式的两种实现方式对比:DCL (double check idiom)双重检查 和 lazy initialization holder class(静态内部类)...

    首先这两种方式都是延迟初始化机制,就是当要用到的时候再去初始化. 但是Effective Java书中说过:除非绝对必要,否则就不要这么做. 1. DCL (double checked lockin ...

  3. oracle initialization or shutdown in progress解决方法

    今儿一直在测试服务器的迁移问题,不断地创建表空间.创建数据库.创建用户.后来感觉创建这么多东西太占用磁盘空间,心想删除一下吧,于是,我们执行了dbca命令,将没用的数据库统统删除,将dbf和dmp文件 ...

  4. 2542513 - AS Java fails to start - Initialization of destination UMEBackendConnection failed

    今天发现SAP As Java 开发机无法启动,根据 Note 2542513 处理该问题并记录. 今天发现SAP EP+BPM服务器不能正常启动,jstart.exe进程显示 some proces ...

  5. C++11 带来的新特性 (2)—— 统一初始化(Uniform Initialization)

    1 统一初始化(Uniform Initialization) 在C++ 11之前,所有对象的初始化方式是不同的,经常让写代码的我们感到困惑.C++ 11努力创造一个统一的初始化方式. 其语法是使用{ ...

  6. 为什么需要权重初始化(weight initialization)?常见的权重初始化方式有哪些?启发式权重初始化的好处?

    为什么需要权重初始化(weight initialization)?常见的权重初始化方式有哪些?启发式权重初始化的好处? 目录 为什么需要权重初始化(weight initialization)?常见 ...

  7. function()默认参数中ReferenceError Cannot access ‘a‘ before initialization的解决方法

    function()默认参数中ReferenceError: Cannot access 'a' before initialization的解决方法 代码 <!DOCTYPE html> ...

  8. 【多标签文本分类】Improved Neural Network-based Multi-label Classification with Better Initialization ……

    ·阅读摘要:   提出了一种新的神经网络初始化方法:利用标签共现初始化最终隐藏层.   [1] Improved Neural Network-based Multi-label Classifica ...

  9. 谷歌工程师:聊一聊深度学习的weight initialization

    TLDR (or the take-away) Weight Initialization matters!!! 深度学习中的weight initialization对模型收敛速度和模型质量有重要影 ...

  10. [译]5.1. System Initialization Overview 系统初始化简介

    目录:http://www.cnblogs.com/WuCountry/archive/2008/11/15/1333960.html   [不提供插图,读者最好从网上下载源书] 5.1. Syste ...

最新文章

  1. python3 乱序函数 shuffle 简介
  2. 【错误记录】IntelliJ IDEA 编译 Groovy 报错 ( GroovyRuntimeException: This script or class could not be run. )
  3. COW奶牛!Copy On Write机制了解一下
  4. 喜报!「神策 SA 分析师认证」第三期认证名单正式公布
  5. 10月17日Servlet培训日记
  6. 面向对象编程已死,OOP 永存!
  7. 语音识别是如何识别出各地方言的?
  8. c 子类对象 访问父类对象受保护成员_面向对象三大特征: 继承
  9. SQLServer - 约束
  10. Oracle 客户端连接server 的方法
  11. 代码笔记——Toast显示文本,图片,图文
  12. .NET Framework 版本选择参考
  13. mysql的etl工具是什么意思_数据同步工具ETL、ELT傻傻分不清楚?3分钟看懂两者区别...
  14. iOS 之强大的WebSocket
  15. 集成混合运动与大功率柔性操作的半人马救灾机器人(4)——项目成果展示
  16. 「软件架构」InfoQ 软件架构和设计趋势报告2020年4月
  17. 如何快速获取淘宝商品的详细信息?看这里就够了
  18. 每日一个CSS——模拟键盘
  19. 英语写作模板(适合高考、四六级英语和考研英语)
  20. 加速度计和陀螺仪指南(很详细的介绍)

热门文章

  1. .Net基础——程序集与CIL HttpClient封装方法 .Net Core 编码规范 C#中invoke和beginInvoke的使用 WebServeice 动态代理类...
  2. matlab-K折交叉验证与分层K折交叉验证
  3. 美的2021高频题汇总 | 备战春招,刷这30题就够了!
  4. keychain介绍
  5. MyBatis---缓存-提高检索效率的利器
  6. java 金额千位用逗号隔开_金额格式化 处理千分位 金额逗号,隔开
  7. 为什么服务器都是8点维护,25日全服维护8小时 分服务器还是开新副本
  8. 开源新手引导框架,支持TypeScript
  9. 用于大数据的星际文件系统
  10. 算法 | 详解斐波那契数列问题