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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值