Changeset 485


Ignore:
Timestamp:
Oct 13, 2007, 10:13:54 PM (16 years ago)
Author:
Peter Johansson
Message:

Fixes #267 in trunk. This ChangeSet? should be equivalent with [478], but using a back_insert_iterator to speed up it slightly.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Functor.h

    r465 r485  
    167167                              const std::vector<T>& v) const
    168168    {
     169      std::vector<T> res;
     170      res.reserve(std::max(u.size(), v.size()));
     171      std::back_insert_iterator<std::vector<T> > inserter(res);
    169172      if ( u.size() > v.size() ){
    170         std::vector<T> res(u.size());
    171         transform(u.begin(), u.end(), v.begin(), res.begin(), std::plus<T>());
    172         copy(u.begin()+v.size(), u.end(), res.begin()+v.size());
    173         return res;
     173        std::transform(v.begin(), v.end(), u.begin(), inserter, std::plus<T>());
     174        std::copy(u.begin()+v.size(), u.end(), inserter);
    174175      }
    175  
    176       std::vector<T> res(v.size());
    177       transform(v.begin(), v.end(), u.begin(), res.begin(), std::plus<T>());
    178       if ( v.size() > u.size() )
    179         copy(v.begin()+u.size(), v.end(), res.begin()+u.size());
     176      else {
     177        std::transform(u.begin(), u.end(), v.begin(), inserter, std::plus<T>());
     178        std::copy(v.begin()+u.size(), v.end(), inserter);
     179      }
    180180      return res;
    181181    }
Note: See TracChangeset for help on using the changeset viewer.