On Wed, Aug 19, 2009 at 10:14 PM, <kent-and@xxxxxxxxx> wrote:
I didn't realise until recently that storage in std::vector is
guaranteed by the C++ standard to be contiguous (versus only being
contiguous in all known implementations). Using this, I think that we
can have safer and cleaner code by using more std::vector in the linear
algebra interface. For example, we could have
GenericVector::get(std::vector<double>& );
GenericVector::set(const std::vector<double>& );
instead of
GenericVector::get(double* x);
GenericVector::set(const double* x);
For backends that want a pointer to an array, we can pass &x[0]. Any
opinions?
Is the use of &x[0] safe ? Will it change if the vector is resized ? This
is maybe
nothing to worry about ?
Sure, this is something to worry about, and there will be no magic here :)
However, it will enable us to make range checks and issue error
messages more easily.