我可以为map :: emplace找到的所有示例都使用相当简单的类型,这些类型具有带有单个参数的构造函数,例如
std::map<std::string, std::string> foo;
foo.emplace("a", "b");
假设值类型构造函数需要两个参数。哎呀,让我们真的变得简单;假设值类型为std::pair<std::string, double>
。如何使用std::map<string, pair<string, double> >::emplace()
在地图中就地构建值类型?
我知道这不起作用:
std::map<std::string, std::pair<std::string, double> > foo;
foo.emplace("a", "b", 1.0);
至少,它在g ++ 4.8.2上大声失败。这甚至可以用C ++ 11吗?