对于容器容纳对象、从容器中获取对象,STL的方式—— 拷进去、拷出来。
对象通过使用它的拷贝成员函数来拷贝: 特别是它的复制构造函数和它的赋值操作符(=)
Widget( const Widget & );
Widget & operator = ( const Widget & );
分割问题暗示了把一个派生类对象插入基类对象的容器几乎总是错的,一个使拷贝更高效、正确而且对分割问题免疫的简单方式是建立指针的容器而不是对象的容器。指针拷贝快,且指针拷贝没有分割。其中智能指针的容器是一个吸引人的选择。
相比于数组,STL vector 可以在需要的时候增长:
vector<Widget> vw; // 建立一个0个Widget对象的vector
vw.reserve( maxNumWidgets );