我有一个std::unordered_map
,我想向其中添加一个键值对。如果键尚不存在,那么我希望将其与给定值相加。如果密钥已经存在,那么我希望更新该值。
似乎这里的标准建议是使用operator[]
。但这要求映射的值类型是默认可构造的。我希望避免提供默认的构造函数。我该怎么办?
答案 0 :(得分:8)
您应该使用insert_or_assign
(C ++ 17)
如cppreference所示,在这种情况下,您不需要具有默认的可构造对象:
insert_or_assign返回的信息比operator []更多,并且不需要映射类型的默认可构造性。