分段故障:11打印动态数组时

时间:2014-12-10 12:15:18

标签: c++ arrays dynamic

我有一个简单的C ++代码,我将动态数组定义为:

std::vector<double>IPWeights;

然后将它传递给一个带引用的引用函数(所以我更改了它的内容),如:

void reference (std::vector<double> &IPWeights)

然后在我的main函数中,在我更改了我的数组内容后,我想打印它:

int size_weights=IPWeights.size();

for (int i=0; i<size_weights; i++)
{
    std::cout<<IPWeights[i]<<std::endl;
}

但在屏幕上我只看到“细分错误11”。

其中引用的外观如下:

void reference( std::vector<double> &IPWeights)
{
    IPWeights[0]=0.4500;
    IPWeights[1]=0.2648;
    IPWeights[2]=0.2648;
    IPWeights[3]=0.2648;
    IPWeights[4]=0.2519;
    IPWeights[5]=0.2519;
    IPWeights[6]=0.2519;
}

感谢任何建议, 提前致谢。

1 个答案:

答案 0 :(得分:8)

我的水晶球说你没有为矢量分配内存。您应该执行以下操作之一:

  • 初始化具有适当大小的矢量:

    std::vector<double> IPWeights(size_you_need);
    
  • 在分配之前调用IPWeights.resize()

    std::vector<double> IPWeights;
    IPWeights.resize(size_you_need);
    
  • 调用IPWeights.push_back()而不是按索引分配:

    IPWeights.push_back(0.4500);
    IPWeights.push_back(0.2648);
    //...