将std::map
的比较器复制到map1 = map2;
需要map2
副本分配(样式map1
)吗?
我已经测试了实际的实现。我更感兴趣的是它在C ++标准中的位置。
答案 0 :(得分:11)
如果我们查看[associative.reqmts] / 12,我们有
当通过传递比较对象构造关联容器时,容器不应存储对传递的对象的指针或引用,即使该对象是通过引用传递的。当通过复制构造函数或赋值运算符复制关联容器时,目标容器将使用正在复制的容器中的比较对象,就像该比较对象已传递给目标一样容器在它的构造函数中。
强调我的
因此,在您的示例中,map1
将获得map2
比较器的副本。
答案 1 :(得分:-2)
从cplusplus.com你可以看到copy-constructor(3)下面的
(3)n
容器保留了alloc的内部副本和 comp ,这些都是使用的 分配存储并在整个生命周期内对元素进行排序。 复制构造函数(3)创建一个保留和使用的容器 x的分配器和比较对象的副本。