通过引用传递向量

时间:2016-03-31 02:25:45

标签: c++ vector return

#include <iostream>
#include <vector>

void init()
{       
    std::vector<double> b;
    b.push_back(10);
    return;
}

double mean(double *array, size_t n)
{
    double m=0;
    for(size_t i=0; i<n; ++i)
    {
        m += array[i];
    }
    std::cout<<*array<<std::endl;
    return m/n;
}

int test(int *b)
{
    int dist;
    dist=b[0];
    return dist;
}

int main()
{
    int x=0;
    int y=0;
    //double a[5]={1, 2, 3, 4, 5};
    std::vector<double> a;
    a.push_back(1);
    a.push_back(2);
    a.push_back(3);
    a.push_back(4);
    a.push_back(5);
    std::cout<<mean(&a[0], 5)<<std::endl;    // will print 3
    init();
    y=test(&b[0]);
    std::cout<<y<<std::endl;
    return 0;
}

我试图检查是否可以在“init”函数中初始化向量“b”并在“test”函数中检索值,最后在main函数中返回为“y”。这甚至可能吗?这只是探索这种可能性的测试代码。

1 个答案:

答案 0 :(得分:2)

也许你想要:

std::vector<double> init()
{       
    std::vector<double> b;
    b.push_back(10);
    return b;
}

然后在main:

auto b = init();
y = test( &b.at(0) );

致电mean时。得到a.size()的大小而不是硬编码5.然后通过a.data()而不是&a[0],如果向量为空,它就不会崩溃。