Item 5. Prefer range member functions to their single-element counterparts.

    在effective STL中,作者建议我们尽量使用区间成员函数代替他的单元素的兄弟函数。使用区间成员函数主要有以下几方面的优点:

     (1)使用区间成员函数能够使你的代码所要表达的意思更清晰,而是用单元素函数将必须引入循环,可能对于程序的维护会造成更多的困难。

     (2)使用区间成员函数将可以大量减少数据的移动次数。例如如果在vector前面查出元素,那么使用单元素函数每插入一个元素就需要移动目前vector中所有的元素。但是如果使用区间成员函数inserter,在插入元素时,将会一次性的计算出每一个元素的最终位置,这样只会移动一次,大大的提高了效率。

        (3)使用区间成员函数将有可能会减少申请内存的次数。想vector这样的容器,会根据元素的多少重新分配内存空间大小,如果每次使用单元素函数,可能会随着插入元素的个数增加多次申请内存。但是使用区间函数,将会一次性的申请内存。

      在以下情形下,应该尽量使用区间函数:

      (1)对容器的赋值操作

       container::container( InputIterator begin,InputIterator end);  
     (2)序列容器的插入操作

       void container::insert(iterator position,  // where to insert the range
       InputIterator begin,             // start of range to insert 
       InputIterator end);              // end of range to insert
   (3)关联容器的插入操作

       void container::insert(lnputIterator begin, InputIterator end);

   (4)容器的擦除操作

       iterator container::erase(iterator begin, iterator end);  
 
       void container::erase(iterator begin, iterator end);
  (5)容器的区间赋值

       void container::assign(lnputIterator begin, InputIterator end);
      凡是可以使用区间函数的地方尽量使用区间函数,区间函数不能保证效率一定比单元素函数好,但是一定不会比单元数效率低。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值