c++03:std::map 中内置类型的默认构造函数

2024-01-11

我一直以为下面的代码

std::map<int, int> test;
std::cout << test[0] << std::endl;

将打印随机值,因为它会在地图内创建统一值。然而,事实证明,created int 实际上总是初始化为零,并且标准内置类型在某些情况下也初始化为零。

问题是:标准类型(int/char/float/double/size_t)何时执行零初始化?我很确定如果我声明int i;在不知名的地方,它将包含随机数据。

附:问题是关于C++03标准的。提出这个问题的原因是,现在我不再确定何时have为 int/float/size_t 等内置类型提供初始化,或者可以安全地省略它。


标准集装箱(map, vector等...)将永远值初始化他们的元素。

大致说来,值初始化 is:

  • 默认初始化如果有默认构造函数
  • 零初始化否则

(有人会说,两全其美)

语法很简单:T t = T();将进行值初始化t (and T t{};在 C++11 中)。

当你使用map<K,V>::operator[],该对的“值”部分是值初始化的,对于内置类型会产生0.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++03:std::map 中内置类型的默认构造函数 的相关文章

  • 为什么通过派生类对基类的引用与 :: - 运算符不明确?

    所以我想知道为什么以下钻石问题的代码片段无法编译 我知道这个问题通常是通过虚拟继承来解决的 我不是故意使用它的 该代码只是为了展示我的问题 即为什么编译器称此不明确 因此 我在 struct Base 中声明了两个成员变量 因为这两个子类
  • 编写此代码片段的有效方法是什么? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 更有效和 或更短地重写此代码以节省字节并显得不那么冗长的方法 if N 2 0 N 6 N 8 N 10 N 12 N 14 N 16 N
  • 在 C# 中使用“using”关键字避免多次处置的最佳实践

    当变量是 IDisposable 时 我们有using关键字来管理处置 但是如果我们在方法中返回值怎么办 using twice StringContent stringToStringContent string str using St
  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • 是否可以从 C++ 应用程序调用 C# 应用程序?

    我是一名编程学生 现在我已经上了两门 C 课程 这个学期我将参加我的第一门 C 课程 出于好奇 是否可以从 C 应用程序调用 C 应用程序 如果是的话 是否还可以检查运行该程序的计算机是否具有 NET框架 我只是很好奇 我想如果可能的话 这
  • IEnumerable 的 String.Join(string, string[]) 的类似物

    class String包含非常有用的方法 String Join string string 它从数组创建一个字符串 用给定的符号分隔数组的每个元素 但一般来说 它不会在最后一个元素之后添加分隔符 我将它用于 ASP NET 编码 以用
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

    我正在 ASP NET MVC 中开发我的第一个应用程序 但遇到了一个我无法解决的问题 即使在阅读了整个互联网之后也是如此 因此 我有几个使用视图模型创建的视图 它们是报告 这些视图模型是根据用户选择标准填充的 我正在尝试构建一种接受模型并
  • while循环中的变量初始化

    我有一个可以分块读取文件的函数 public static DataObject ReadNextFile 数据对象看起来像这样 public DataObject public string Category get set And ot
  • 将日期时间转换为指定格式

    我有这个日期格式yy MM dd HH mm ss ex 12 02 21 10 56 09 问题是 当我尝试使用以下代码将其转换为不同格式时 CDate 12 02 21 10 56 09 ToString MMM dd yyyy HH
  • Resharper:IEnumerable 的可能多重枚举

    我正在使用新的 Resharper 版本 6 在我的代码中的几个地方 它给一些文本加了下划线 并警告我可能存在IEnumerable 可能的多重枚举 我理解这意味着什么 并在适当的情况下采纳了建议 但在某些情况下 我不确定这实际上是一个大问
  • 如何使用 CSI.exe 脚本参数

    当你运行csi exe 安装了 Visual Studio 2015 update 2 您将得到以下语法 Microsoft R Visual C Interactive Compiler version 1 2 0 51106 Copyr
  • ALTER TABLE ... ADD CONSTRAINT 失败时将事务回滚到保存点

    有没有办法在事务中添加检查约束and如果失败回滚到以前的保存点 而不是回滚整个事务 就我而言 当 ALTER TABLE ADD CONSTRAINT 命令失败时 事务无法回滚到保存点 尝试这样做会引发 InvalidOperationEx
  • 为什么 f(i = -1, i = -1) 是未定义的行为?

    我正在读关于违反评估顺序 http en cppreference com w cpp language eval order 他们举了一个令我困惑的例子 1 如果标量对象上的副作用相对于同一标量对象上的另一个副作用是无序的 则行为未定义
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 有没有办法直接在函数参数中格式化字符串而不是使用临时字符串?

    我有一个接受字符串 字符数组 作为参数的函数 void enterString char my string 当使用这个函数时 我经常发现自己想要输入格式化的字符串 我使用 sprintf 来做到这一点 然而 我每次都必须创建一个临时字符串
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 如果“嵌入式”SQL 2008 数据库文件不存在,如何创建它?

    我使用 C ADO Net 和在 Server Management Studio 中创建的嵌入式 MS SQL 2008 数据库文件 附加到 MS SQL 2008 Express 创建了一个数据库应用程序 有人可以向我指出一个资源 该资
  • 将 Swagger 与命名空间版本的 WebApi 结合使用

    我已经找到了如何使用基于名称空间的 WebAPI 版本这个班 https aspnet codeplex com SourceControl changeset view dd207952fa86 Samples WebApi Namesp
  • 将 char 绑定到枚举类型

    我有一段与此非常相似的代码 class someclass public enum Section START MID END vector section Full void ex for int i 0 i section

随机推荐

  • 从字符串java中提取日期

    我有一个包含多个日期的字符串 例如 20 Jul 2012 5 11 36 670 UTC PM 20 Jul 2012 5 11 36 683 UTC PM 如何读取该字符串并提取每个日期 我正在使用SimpleDateFormat类来创
  • 将不同层独立部署到 Azure

    假设我有一个应用程序 它分为各个层 演示 业务 数据访问 如何将这些层独立部署到Azure 问题是关于Azure配置 而不是关于应用程序的架构 应用程序通常分为各种角色 每个角色都是 Windows Server 2008 R2 具有已定义
  • CardMedia高度材质-ui

    我正在努力尝试改变 CardMedia 内图像的高度 我设置样式 const style height 32 并将其用于
  • 使用 pip 从 github 的特定分支安装包

    我遇到了一个非常奇怪的问题 我尝试从我的 github fork 中 pip 安装一个包 我过去曾多次这样做过 而且总是有效 这就是我所做的 pip install git https my branch 虽然这在我的本地计算机上工作得很好
  • Python beautifulsoup 抢表

    我正在尝试从此网页中获取表格 我不确定我是否抓住了正确的标签 这是我到目前为止所拥有的 from bs4 import BeautifulSoup import requests page http www airchina com cn
  • 使用 LINQ to SQL 是否有助于防止 SQL 注入

    我正在建立一个公共站点 我首先想到的是 SQL 注入 我正在保存一些文本字段 并使用 linq 来更新 写入数据库 我使用 linq 安全吗 此示例正在创建用户帐户 Data MemberRegistrationDataContext co
  • 如何在 Android 中关闭/销毁 Firebase 引用?

    这是场景 创建了 firebase 引用 Firebase myRef new Firebase url In Main Activity 用户单击按钮导航到其他活动 调用主活动的 onPause 有没有办法销毁这个构造函数 此引用正在创建
  • Base64 编码图像 blob 未在 IE 中显示

    echo img src height 150 这在 firefox safari 和 chrome 中显示的图像效果很好 但在 Internet Explorer 中它显示了一个漂亮的红十字 我认为这是因为编码的原因 尝试更换data i
  • Nlog目标数据库在运行时设置连接信息

    使用 Nlog 和数据库目标 有没有办法在运行时设置连接信息 我记得我的一些同事也做过类似的事情 他找到了这样的答案 http nlog forum 1685105 n2 nabble com DDL for Database Table
  • 溢出:隐藏不适用于正方向的平移

    我最近遇到了一件奇怪的事情overflow hidden 我将它设置为一个元素 然后我想将其中的元素转换为translate 当它向负方向平移时 它将被隐藏 但如果我向正方向平移 它就不会被隐藏 在桌面浏览器中 它并没有真正显示出来 但您可
  • sp_executesql 与 'IN' 语句

    我试图使用 sp executesql 来防止 SQL 2005 中的 SQL 注入 我有一个像这样的简单查询 SELECT from table WHERE RegionCode in X101 B202 但是 当我使用 sp execu
  • 函数后面的const如何优化程序?

    我见过一些这样的方法 void SomeClass someMethod const 这个 const 声明有什么作用 它如何帮助优化程序 Edit 我看到这个问题的第一部分之前已经被问过 BUT 它仍然没有回答第二部分 这将如何优化程序
  • 可编辑文本字段的 UITableView 列表

    我知道这可能不符合 Apple 的 iPhone 人机界面指南 但我想摆脱一级推送视图并拥有可编辑文本字段的列表 此外 我希望当视图出现时键盘从一开始就出现在屏幕上 问题是 当我有超过三个这样的字段时 弹出键盘将覆盖下面的字段 用户无法向下
  • 如果 @Produces 注释缺失,球衣服务会返回什么?

    我开始学习开发安全的网络服务 正如我注意到的 大多数示例都使用以下注释 Consumes 定义输入参数的格式 Produces 定义输出参数的格式 但在实际代码中我看到的方法如下所示 POST Consumes MediaType APPL
  • Chrome扩展,在后台脚本中播放声音

    我想从 Chrome 扩展程序播放声音 但我读到内容脚本无法播放声音 所以我把这段代码放在我的后台脚本中 var audio new Audio alert ogg audio play 但还是没有声音 从 generated backgr
  • 将 ASP.NET 会员资格提供程序与现有用户数据库结合使用

    我目前正在 Net 中重写整个网站 当前网站是用foxpro编写的 并使用自定义逻辑 验证规则和Sql服务器表来存储和验证用户 我想使用会员提供程序 但我有一个主要问题 我不知道如何克服 新站点和旧站点都必须共享用户和凭据 用户必须能够在过
  • 没有匹配的构造函数来初始化“std::thread”

    我一直在研究一个相当简单的设施 并发for循环构造 它采用输入元素列表 输出向量和从输入元素计算输出元素的函数 我有这个片段无法编译 template
  • scikit-learn 中出现“ValueError:无法将字符串转换为浮点数”错误

    我正在运行以下脚本 import numpy as np import matplotlib pyplot as plt import pandas as pd from sklearn preprocessing import OneHo
  • 自动下载Gradle项目中的源

    在 Maven 项目中 有一个选项可以自动下载所有库的源代码 和 javadoc 对于 Gradle 项目 我没有找到任何选项 只需打开一个类并单击 在互联网中搜索 如果您有很多库 这会非常烦人 有没有办法自动附加来自互联网的源 maven
  • c++03:std::map 中内置类型的默认构造函数

    我一直以为下面的代码 std map