C++ 将std::initializer\u列表插入std::map

C++ 将std::initializer\u列表插入std::map,c++,c++11,std,stdmap,C++,C++11,Std,Stdmap,我有这样一种方法: std::map<std::string, int> container; void myMap(std::initializer_list<std::pair<std::string, int>> input) { // insert 'input' into map... } myMap({ {"foo", 1} }); 如何转换自定义参数并插入到映射中 我试过: container = input; conta

我有这样一种方法:

std::map<std::string, int> container;

void myMap(std::initializer_list<std::pair<std::string, int>> input)
{
    // insert 'input' into map...
}
myMap({
    {"foo", 1}
});
如何转换自定义参数并插入到映射中

我试过:

container = input;

container(input);
但是不起作用,因为map的参数只有
std::initializer\u list
,并且没有
std::pair

谢谢大家

container.insert(input.begin(), input.end());

如果要替换地图的内容。do
container.clear()首先。

您的问题是std::map的值类型不正确 std::对。它是std::pair。注意键上的常数。这很好:

std::map<std::string, int> container;

void myMap(std::initializer_list<std::pair<const std::string, int>> input) {
    container = input;
}
std::map容器;
void myMap(std::初始值设定项\列表输入){
容器=输入;
}
如果无法更改函数的签名,则必须编写循环或使用std::copy将每个输入元素转换为容器的value_类型。但我猜你可能可以,因为它叫myMap,而不是otherGuysMap:)