c++ - 如何使用 std::copy 将一张 map 复制到另一张 map 中?

标签 c++ stl map iterator copy

我想将一个 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/

相关文章:

c++ - 如何使 map::find 操作不区分大小写?

r - ggplot2 中的 geom_map 边界 - 重新审视

c++ - 原生 C++ 项目无法在 Release模式下编译?

c++ - 模板类的友元运算符

c++ - 有状态的STL比较器还有更好的选择吗?

c++ - 为什么 STL 容器使用复制来填充调整大小?

java - Map 的 size() 方法返回什么?

c++ - map 复杂查找操作

c++ - 将节点数组(可变长度)转换为 const float** 以调用 opencv.calcHist

c++ - 类型信息没有通过 new/malloc 传递,只有 size_t