在map初始化列表中使用std::make_pair

Using std::make_pair in map initializer list

本文关键字:std make pair map 初始化 列表      更新时间:2023-10-16

静态映射的下列初始化有区别吗?

static std::map<FunctionID, std::string> enum_string_representation {
  {FunctionID.something, "something"}
};

static std::map<FunctionID, std::string> enum_string_representation {
  {std::make_pair(FunctionID.something, "something")}
};

无差异。map有几种可能的构造函数,你在这两种情况下都使用这个:

map( std::initializer_list<value_type> init,
     const Compare& comp = Compare(),
     const Allocator& alloc = Allocator() );

value_typetype std::pair<..,..>组成,由{FunctionID.something, "something"}std::make_pair(FunctionID.something, "something")组成。

你也可以这样写:

static std::map<FunctionID, std::string> enum_string_representation {
  std::make_pair(FunctionID.something, "something")
};