我试图用std :: vector编写用户定义的对象。
我读到了User Defined类,如果Copy Constructor和Assignment Operator是public,那么只有一个可以在STL容器中插入它的对象。
这是因为两个原因::
答案 0 :(得分:1)
C ++中的标准容器分配他们管理的内存。如果你的程序创建了一个对象,那么该对象位于另一个内存位置,因此要成为容器的一部分,就会在容器的内存中创建一个副本。
而不是复制,移动可能已经完成,但在很多情况下,这样做效率会更高,有时甚至会非常不方便。
避免复制的一个好方法是使用emplace函数直接在容器中创建对象。
关于向量增长,因为新向量可能必须位于不同的内存地址而内存中包含对象,所以必须移动或复制它们。 This answer显示了如何在调整大小时使向量移动。