我想将一个 std::map 的内容复制到另一个。我可以使用 std::copy
为了那个原因?显然,下面的代码是行不通的:
int main() {
typedef std::map<int,double> Map;
Map m1;
m1[3] = 0.3;
m1[5] = 0.5;
Map m2;
m2[1] = 0.1;
std::copy(m1.begin(), m1.end(), m2.begin());
return 0;
}
这行不通,因为 copy
将调用 operator*
在 m2.begin()
“取消引用”它并分配一个值(所有值的类型都是 std::pair<const int, double>
)。然后它会调用operator++
移动到 m2
中的下一个空格.由于 const
,这两个操作都不起作用在 const int
并且没有为任何新元素保留空间。
有什么方法可以使它与 std::copy
一起使用吗? ?
谢谢!
最佳答案
您可以使用 GMan 的答案 --- 但问题是,为什么您要使用 std::copy
?您应该使用成员函数 std::map<k, v>::insert
而是。
m2.insert(m1.begin(), m1.end());
关于c++ - 如何使用 std::copy 将一张 map 复制到另一张 map 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2748295/