Changeset 485


Ignore:
Timestamp:
Oct 13, 2007, 10:13:54 PM (11 years ago)
Author:
peter
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.