我有下面的代码生成一个包含[xmin,xmax]等距离点的一维向量。当我调用该函数时,它不会返回向量VX。我究竟做错了什么?
double meshGen1d( double xmin, double xmax, int k )
{
int i;
int nV = k + 1;
boost::multi_array< double, 1 > VX( boost::extents[ nV - 1 ] );
//std::vector< double > VX( nV - 1 );
std::cout<<" Setting up the 1D mesh "<<std::endl;
//Generate node coordinates
VX[0] = xmin;
for ( i=0; i<nV; i++ )
{
VX[ i ] = VX[ i - 1 ] + ( xmax - xmin ) / k;
}
return VX;
}
答案 0 :(得分:0)
当函数VX
的范围结束时,原始meshGen1d
对象将被销毁。
您可以通过引用传入对象,如下所示:
void meshGen1d(double xmin, double xmax, int k, boost::multi_array<double, 1>& VX )
{
// ...
}
这将阻止创建(并销毁)额外的副本,如果对象在内存中很大,这可能很有用。