【问题标题】:How to create an empty std::map object? [closed]如何创建一个空的 std::map 对象? [关闭]
【发布时间】:2020-10-29 13:05:21
【问题描述】:

我试过这个:

std::map<int,int> m; 

它起作用了——m 变成了一张空地图。但是,如果编译器默认选择不将 m 初始化为空映射,则此方法可能不起作用。更好的解决方案?

【问题讨论】:

  • 这将始终创建一个空地图。这就是地图的默认构造函数所做的。
  • 如果您的编译器没有发出调用m 的构造函数的代码,那么您的编译器将无法修复
  • 我怀疑这么多反对票的原因是您自己很容易发现这一点。当你有这样的问题时,我建议参考 cppreference,你会发现大多数答案都可以在那里找到:)
  • @Eric 好问题。在 C 中,“int x”可能会根据 x 是本地的、全局的还是编译器上的 x 产生不同的值,对吧?但这似乎毕竟不是一个明显的问题,例如询问局部变量的默认值是 Java 面试中的一个问题。
  • @zell 您正在谈论未定义行为的未初始化变量。但是,一旦实例化对象,它们总是会根据它们的构造函数进行初始化。如果你不提供一个,编译器会为你生成一个默认的。

标签: c++ stdmap


【解决方案1】:

有更好的解决方案吗?

从字面上理解你的问题,不。没有更好的解决方案。

这将创建a default constructed, and therefore empty std::map&lt;int,int&gt;

std::map<int,int> m; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 2010-12-11
    • 1970-01-01
    • 2016-10-14
    相关资源
    最近更新 更多