2015-04-30 98 views
3

我可以为map :: emplace找到的所有示例都使用相当简单的类型,它们的构造函数只接受一个参数,例如,map <K,V> :: emplace其中V构造函数需要两个参数

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吗?

+0

如何foo.emplace(标准:: make_pair( “A”,的std :: make_pair( “B”,1.0))); –

回答

5

我的搜索功能很弱。实际上,这很好地解答了这个问题,in another stackoverflow question

简短的回答:

foo.emplace(std::piecewise_construct, 
      std::forward_as_tuple("a"), 
      std::forward_as_tuple("b", 1.0)); 
相关问题