C++ list initialization
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.7
是double
型別的,不應該被拿去初始化一個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相关推荐
- 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 ...
- 单例模式的两种实现方式对比:DCL (double check idiom)双重检查 和 lazy initialization holder class(静态内部类)...
首先这两种方式都是延迟初始化机制,就是当要用到的时候再去初始化. 但是Effective Java书中说过:除非绝对必要,否则就不要这么做. 1. DCL (double checked lockin ...
- oracle initialization or shutdown in progress解决方法
今儿一直在测试服务器的迁移问题,不断地创建表空间.创建数据库.创建用户.后来感觉创建这么多东西太占用磁盘空间,心想删除一下吧,于是,我们执行了dbca命令,将没用的数据库统统删除,将dbf和dmp文件 ...
- 2542513 - AS Java fails to start - Initialization of destination UMEBackendConnection failed
今天发现SAP As Java 开发机无法启动,根据 Note 2542513 处理该问题并记录. 今天发现SAP EP+BPM服务器不能正常启动,jstart.exe进程显示 some proces ...
- C++11 带来的新特性 (2)—— 统一初始化(Uniform Initialization)
1 统一初始化(Uniform Initialization) 在C++ 11之前,所有对象的初始化方式是不同的,经常让写代码的我们感到困惑.C++ 11努力创造一个统一的初始化方式. 其语法是使用{ ...
- 为什么需要权重初始化(weight initialization)?常见的权重初始化方式有哪些?启发式权重初始化的好处?
为什么需要权重初始化(weight initialization)?常见的权重初始化方式有哪些?启发式权重初始化的好处? 目录 为什么需要权重初始化(weight initialization)?常见 ...
- function()默认参数中ReferenceError Cannot access ‘a‘ before initialization的解决方法
function()默认参数中ReferenceError: Cannot access 'a' before initialization的解决方法 代码 <!DOCTYPE html> ...
- 【多标签文本分类】Improved Neural Network-based Multi-label Classification with Better Initialization ……
·阅读摘要: 提出了一种新的神经网络初始化方法:利用标签共现初始化最终隐藏层. [1] Improved Neural Network-based Multi-label Classifica ...
- 谷歌工程师:聊一聊深度学习的weight initialization
TLDR (or the take-away) Weight Initialization matters!!! 深度学习中的weight initialization对模型收敛速度和模型质量有重要影 ...
- [译]5.1. System Initialization Overview 系统初始化简介
目录:http://www.cnblogs.com/WuCountry/archive/2008/11/15/1333960.html [不提供插图,读者最好从网上下载源书] 5.1. Syste ...
最新文章
- python3 乱序函数 shuffle 简介
- 【错误记录】IntelliJ IDEA 编译 Groovy 报错 ( GroovyRuntimeException: This script or class could not be run. )
- COW奶牛!Copy On Write机制了解一下
- 喜报!「神策 SA 分析师认证」第三期认证名单正式公布
- 10月17日Servlet培训日记
- 面向对象编程已死,OOP 永存!
- 语音识别是如何识别出各地方言的?
- c 子类对象 访问父类对象受保护成员_面向对象三大特征: 继承
- SQLServer - 约束
- Oracle 客户端连接server 的方法
- 代码笔记——Toast显示文本,图片,图文
- .NET Framework 版本选择参考
- mysql的etl工具是什么意思_数据同步工具ETL、ELT傻傻分不清楚?3分钟看懂两者区别...
- iOS 之强大的WebSocket
- 集成混合运动与大功率柔性操作的半人马救灾机器人(4)——项目成果展示
- 「软件架构」InfoQ 软件架构和设计趋势报告2020年4月
- 如何快速获取淘宝商品的详细信息?看这里就够了
- 每日一个CSS——模拟键盘
- 英语写作模板(适合高考、四六级英语和考研英语)
- 加速度计和陀螺仪指南(很详细的介绍)
热门文章
- .Net基础——程序集与CIL HttpClient封装方法 .Net Core 编码规范 C#中invoke和beginInvoke的使用 WebServeice 动态代理类...
- matlab-K折交叉验证与分层K折交叉验证
- 美的2021高频题汇总 | 备战春招,刷这30题就够了!
- keychain介绍
- MyBatis---缓存-提高检索效率的利器
- java 金额千位用逗号隔开_金额格式化 处理千分位 金额逗号,隔开
- 为什么服务器都是8点维护,25日全服维护8小时 分服务器还是开新副本
- 开源新手引导框架,支持TypeScript
- 用于大数据的星际文件系统
- 算法 | 详解斐波那契数列问题