An answer to another question
解释了为什么我们(据说)不能拥有const
个对象的容器。例如,这是不允许的:
vector<const int> v; //not allowed
但为什么pair
允许第一个对象为const
?实际上,这是pair
对象中map
s所发生的情况。我错过了什么吗?
非常感谢对此现象的详细而直观的解释。
答案 0 :(得分:15)
我认为主要原因是因为std::pair
没有重新分配对象,所以它们不必是可分配的。
<强>更新强>
实际上,vector是唯一需要可分配对象的容器。这是因为相应的标准向量必须具有其元素的连续存储位置。因此,如果没有空间可以添加更多对象,则向量必须将其数据重新分配到另一个位置(因此使用对象的assignable属性)。
答案 1 :(得分:6)
std::pair
只有在您尝试分配内容时才需要分配内容。但是,std::vector
始终需要分配以进行重新分配。