Dictionary 地图<;K、 V>;::emplace,其中V构造函数需要两个参数

Dictionary 地图<;K、 V>;::emplace,其中V构造函数需要两个参数,dictionary,emplace,Dictionary,Emplace,我能找到的所有map::emplace示例都使用了相当简单的类型,这些类型的构造函数只接受一个参数,例如 std::map<std::string, std::string> foo; foo.emplace("a", "b"); std::map foo; foo.就业(“a”、“b”); 假设值类型构造函数需要两个参数。见鬼,让我们真的让它变得简单;假设值类型为std::pair。如何使用std::map::emplace()在映射中构建适当的值类型 我知道这行不通: std

我能找到的所有map::emplace示例都使用了相当简单的类型,这些类型的构造函数只接受一个参数,例如

std::map<std::string, std::string> foo;
foo.emplace("a", "b");
std::map foo;
foo.就业(“a”、“b”);
假设值类型构造函数需要两个参数。见鬼,让我们真的让它变得简单;假设值类型为
std::pair
。如何使用
std::map::emplace()
在映射中构建适当的值类型

我知道这行不通:

std::map<std::string, std::pair<std::string, double> > foo;
foo.emplace("a", "b", 1.0);
std::map foo;
foo.emplace(“a”、“b”和1.0);

至少,它在g++4.8.2上失败的声音很大,而且失败的时间很长。这在C++11上可能吗?

我的搜索功能很弱。事实上,这一点得到了回答,非常详细,也很有启发性

简单的回答是:

foo.emplace(std::piecewise_construct,
            std::forward_as_tuple("a"),
            std::forward_as_tuple("b", 1.0));
那么foo.emplace(std::make_-pair(“a”,std::make_-pair(“b”,1.0))呢;