用C ++返回一个向量

时间:2015-05-28 16:18:22

标签: c++ vector

我有下面的代码生成一个包含[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;
}

1 个答案:

答案 0 :(得分:0)

当函数VX的范围结束时,原始meshGen1d对象将被销毁。 您可以通过引用传入对象,如下所示:

void meshGen1d(double xmin, double xmax, int k, boost::multi_array<double, 1>& VX )
{
    // ...
}

这将阻止创建(并销毁)额外的副本,如果对象在内存中很大,这可能很有用。