I would like to avoid copying the data. That could probably be done, but would not be a great solution.
Have a look at array adaptors. For example,
typedef boost::numeric::ublas::shallow_array_adaptor<double> ArrayAdaptor;
typedef boost::numeric::ublas::vector<double,ArrayAdaptor> VecType;
vector<double> fieldValues;
// ... initialize fieldValues ...
VecType vec( npts, ArrayAdaptor(npts,fieldValues) );
vector<double>::iterator ival = fieldValues.begin();
for( VecType::iterator i=vec.begin(); i!=vec.end(); ++i, ++ival ){
*i = *ival;
}
Thanks for the suggestion, but how is this any different than copying the data?