我们可以将内容一张地图复制到另一张不同类型的地图吗?
copy std::map<int, vector<int>> to std::map<std:string, vector<int>>
答案 0 :(得分:3)
您无法复制它们。虽然地图是从同一个类模板中实例化的,但它们仍然是不相关的类型,非常类似于struct Foo {};
和struct Bar {};
尽管如此,你可以transform
彼此相对:
std::map<int, std::vector<int>> m1;
std::map<std::string, std::vector<int>> m2;
std::transform(m1.begin(), m1.end(), std::inserter(m2, m2.end()),
[](const std::pair<int, std::vector<int>>& p)
{
return std::make_pair(std::to_string(p.first), p.second);
});
答案 1 :(得分:1)
恭敬地从@Ceasars中删除了答案the last time this was asked ...
std::map<std::string, vector<int>>
第3步可以使用boost::lexical_cast
,std::to_string
(在C ++ 11中)或非标准itoa
完成。
答案 2 :(得分:0)
当然,您只需将int转换为字符串即可。我会建议这样的事情:
string newKey(itoa(key));
(检查一下是否有效:))