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:)