我在某处读到了已经在向量中的对象,在重新分配向量时会被复制。
这是为什么?难道他们不应该被感动吗?另外,这是否意味着期望为存储在向量中的对象编写复制构造函数?
答案 0 :(得分:3)
在C ++ 11出现之前,向量的元素必须满足CopyAssignable和CopyConstructible的要求。
从C ++ 11到C ++ 17,对元素施加的要求取决于对容器执行的实际操作。通常,要求元素类型是完整类型并满足Erasable的要求,但许多成员函数强加了更严格的要求。
从C ++ 17开始,对元素施加的要求取决于对容器执行的实际操作。通常,要求元素类型满足Erasable的要求,但许多成员函数强加了更严格的要求。如果分配器满足分配器完整性要求,则可以使用不完整的元素类型实例化此容器(但不是其成员)。