flat_hash_map + unique_ptr

问题描述 投票:0回答:1

为什么这会创建一个内部为nullptr的unique_ptr? (使用简化的示例。)

  absl::flat_hash_map<int32, std::unique_ptr<std::string>> strings;
  auto& s = strings[0];
  assert(s.get() != nullptr);

或者,我可以使用insert_or_assign()/ insert()并传入外部创建的unique_ptr。但是我试图理解为什么运算符重载不能解决这个问题。

参考:https://github.com/abseil/abseil-cpp/blob/master/absl/container/flat_hash_map.h#L466

c++ unique-ptr abseil
1个回答
0
投票

[]运算符,以返回您的引用,如果该键不存在,将使用其默认构造函数自动创建一个对象。 unique_ptr的默认构造函数会自动将其初始化为nullptr

© www.soinside.com 2019 - 2024. All rights reserved.