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

时间:2014-03-27 14:17:53

标签: c++ c++11 initializer-list

静态地图的以下初始化是否存在差异?

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")}
};

1 个答案:

答案 0 :(得分:1)

没有区别。有两种可能的constructors of 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")
};