$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Peter Dimov (pdimov_at_[hidden])
Date: 2002-03-08 14:41:08
From: "Howard Hinnant" <hinnant_at_[hidden]>
> On Friday, March 8, 2002, at 12:51 PM, Peter Dimov wrote:
>
> > No. One way to solve it (that I see) is
> >
> > template<class F> vector::vector(size_type n, F f);
> >
> > that will allocate memory and use f(this->_Ptr, n) to initialize it.
>
> I'm not following completely how this would solve the numerics problem
> that zero initializing the vector is too expensive, and also solve your
> v.insert problem.
I may be misunderstanding the nature of the "numerics problem."
As I see it, _someone_ has to initialize the vector. The problem is when we
have a library function that will initialize an array of doubles.
Constructing a vector inits to zero, then that library function inits to the
right values, hence the double init problem.
Passing the function to the vector constructor solves the problem - and
leaves the vector initialized so that its other methods work after
construction, as is the case now.
Is there another instance of the "expensive init" problem that I'm missing?