【问题标题】:Increment default constructed int in the unordered map在无序映射中增加默认构造的 int
【发布时间】:2021-09-26 14:06:10
【问题描述】:

我有无序的计数器图,例如:

std::unordered_map<std::string, std::size_t> counters_;

我是否需要在尝试增加值之前手动创建一个值?下一行是否会被视为未定义行为?

std::unordered_map<std::string, std::size_t> counters_;

counters_["non_existing_key"] += 1;

【问题讨论】:

  • [] 运算符将始终创建一个“默认构造”值(如果不存在)。对于整数类型,这意味着该值将为零。所以代码会像你希望的那样工作。

标签: c++


【解决方案1】:

通过使用std::map::operator[],您将在地图中创建一个以前不存在的新值。 此外,值 new 将是 value-initialized,因此递增值是明确定义的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    相关资源
    最近更新 更多