我们可以使用不同类型的键将内容从一张地图复制到另一张地图吗?
copy std::map<int, vector<int>> to std::map<std:string, vector<int>>
问问题
566 次
3 回答
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);
});
于 2013-03-07T23:49:16.040 回答
1
恭敬地从@Ceasars 偷走最后一次被问到的答案...
- 创建一个
std::map<std::string, vector<int>>
- 遍历旧地图
- 将密钥更改为 std::string
- 插入新地图
第 3 步可以使用boost::lexical_cast
, std::to_string
(在 C++11 中)或非标准的itoa
.
于 2013-03-07T23:40:20.563 回答
0
当然,您只需要将 int 转换为字符串。我会建议这样的事情:
string newKey(itoa(key));
(首先检查它是否有效:))
于 2013-03-07T23:37:23.003 回答