无需默认构造函数即可将其插入或更新到unordered_map中

时间:2018-12-07 11:08:51

标签: c++ visual-c++ stl unordered-map default-constructor

我有一个std::unordered_map,我想向其中添加一个键值对。如果键尚不存在,那么我希望将其与给定值相加。如果密钥已经存在,那么我希望更新该值。

似乎这里的标准建议是使用operator[]。但这要求映射的值类型是默认可构造的。我希望避免提供默认的构造函数。我该怎么办?

1 个答案:

答案 0 :(得分:8)

您应该使用insert_or_assign(C ++ 17)

cppreference所示,在这种情况下,您不需要具有默认的可构造对象:

  

insert_or_assign返回的信息比operator []更多,并且不需要映射类型的默认可构造性。