无需默认构造函数即可插入或更新 unordered_map
Insert or update into an unordered_map without requiring a default constructor
我有一个 std::unordered_map
,我想向其中添加一个键值对。如果该密钥尚不存在,那么我希望它添加给定的值。如果密钥已经存在,那么我希望更新值。
这里的标准建议似乎是使用 operator[]
。但这要求映射的值类型是可默认构造的。我希望避免提供默认构造函数。我该怎么办?
你应该使用 insert_or_assign
(C++17)
如 cppreference 所示,在这种情况下您不需要具有默认的可构造对象:
insert_or_assign returns more information than operator[] and does not require default-constructibility of the mapped type.
我有一个 std::unordered_map
,我想向其中添加一个键值对。如果该密钥尚不存在,那么我希望它添加给定的值。如果密钥已经存在,那么我希望更新值。
这里的标准建议似乎是使用 operator[]
。但这要求映射的值类型是可默认构造的。我希望避免提供默认构造函数。我该怎么办?
你应该使用 insert_or_assign
(C++17)
如 cppreference 所示,在这种情况下您不需要具有默认的可构造对象:
insert_or_assign returns more information than operator[] and does not require default-constructibility of the mapped type.