码农

导航

拷进去,拷出来——拷贝对象是STL的方式

当你向STL容器中添加一个对象的时候,进入容器的是你指定对象的拷贝;同样,当你从容器获取一个对象时,你所得到的对象不是容器里面的那个对象,而是那个对象的拷贝。一旦一个对象进入一个容器,以后对它的拷贝就多了。比如你从vector、string或deque中插入或删除元素,现有容器的元素就会移动(拷贝);如果使用了排序算法对象也会移动(拷贝)。因为这些拷贝的存在,问题也就出来了:
         一、性能问题。如果用一个拷贝过程很昂贵的对象填充一个容器,即使一个很简单的操作也可能是一个性能瓶颈。容器中移动越多的东西,在拷贝上浪费的地内存和时间越多。
         二、安全问题。因为有继承的存在,拷贝会导致分割。即你建立一个以基类对象为类型的容器,当你往容器里插入派生类对象,拷贝对象时派生类对象的派生部分将会丢失。所以当你把派生类对象插入到基类对象的容器中时你得到的结构都是错的。

posted on 2009-12-28 17:34  北漂民工  阅读(291)  评论(0编辑  收藏  举报