3.确保容器中的对象副本正确且高效

容器中保存的对象并不是你放进去的对象,取出的对象也不是容器内的对象,它们都是副本
这种copy in,copy out就是STL 容器的工作方式。
一旦对象放入容器,它们可能会遭遇更多的复制,比如顺序容器内遭遇排序或者插入,删除,它们元素都会进行一次复制操作。复制操作由拷贝构造函数与拷贝构造运算符完成。那么问题来了,如果对象的复制操作很费时,填充对象这个操作可能会降低程序性能,而且放入的副本如果有特殊含义,可能会导致出错。
在存在继承关系的情况下,copy会导致slicing,举例而言,容器元素类型是bc,但我们试图放入dc对象,那么它的特有部分将会丢失。
总之,使copy操作高效且正确的方法是在容器内部包含指针而不是对象。当然,指针也有一些问题,后期我们会发现智能指针更好用。
听起来STL容器的疯狂复制这种行为很蠢,但是相对于array,它的可塑造性强了很多,我们在使用时只需要它总是在复制并且总是应该向其中加入对象的指针即可。