[Development] QVector now has rvalue push_back (was: Re: HEADS UP: potential trouble from a recent QVector change)

Thiago Macieira thiago.macieira at intel.com
Tue Jul 21 17:53:55 CEST 2015


On Tuesday 21 July 2015 09:09:36 Julien Blanc wrote:
> > The templateness changes how a type different than the vector's type gets 
> > constructed (it might undergo a conversion first). 
> 
> Not sure i understand you well there. The variadic and templateness
> changes it so that no temporary gets constructed at all, object is
> constructed in-place with a call to a placement new and T’s constructor
> with provided arguments.
> 
> > But assuming I am pushing 
> > back a T, is there any reason I'd want emplace_back? Or vice-versa?
> 
> emplace_back is really designed to avoid the creation of a temporary
> object, so, passing a T to it shouldn’t make any difference : that woul

I'm asking why one of the two would be better than the other if I'm trying to 
add a single T to std::vector<T>. You've explained that emplace_back is 
efficient, but you haven't said whether push_back is as efficient, more efficient or 
less efficient than that.

emplace_back will do perfect forwarding without copy direct into the vector. 
Does push_back do the same?

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center




More information about the Development mailing list