SH.*_*x90 3 c++ stdmap std c++11
我有这样的方法:
std::map<std::string, int> container;
void myMap(std::initializer_list<std::pair<std::string, int>> input)
{
// insert 'input' into map...
}
Run Code Online (Sandbox Code Playgroud)
我可以像这样调用这个方法:
myMap({
{"foo", 1}
});
Run Code Online (Sandbox Code Playgroud)
我如何转换我的自定义参数并插入到地图中?
我试过了:
container = input;
container(input);
Run Code Online (Sandbox Code Playgroud)
但是不要工作,因为地图的参数只是,std::initializer_list并且那里没有std::pair.
谢谢你们.
container.insert(input.begin(), input.end());
Run Code Online (Sandbox Code Playgroud)
如果要替换地图的内容.做container.clear();第一.
您的问题是std :: map <std :: string,int>的value_type 不是 std :: pair <std :: string,int>.它是std :: pair <const std :: string,int>.注意键上的常量.这很好用:
std::map<std::string, int> container;
void myMap(std::initializer_list<std::pair<const std::string, int>> input) {
container = input;
}
Run Code Online (Sandbox Code Playgroud)
如果无法更改函数的签名,则必须编写循环或使用std :: copy将每个输入元素转换为容器的value_type.但我猜你可能,因为它叫myMap而不是otherGuysMap :).
| 归档时间: |
|
| 查看次数: |
1792 次 |
| 最近记录: |