Non*_*ame -1 c++ arrays dynamic
我有一个简单的C++代码,我将动态数组定义为:
std::vector<double>IPWeights;
Run Code Online (Sandbox Code Playgroud)
然后将它传递给一个带引用的引用函数(所以我更改了它的内容),如:
void reference (std::vector<double> &IPWeights)
Run Code Online (Sandbox Code Playgroud)
然后在我的main函数中,在我更改了我的数组内容后,我想打印它:
int size_weights=IPWeights.size();
for (int i=0; i<size_weights; i++)
{
std::cout<<IPWeights[i]<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
但在屏幕上我只看到"分段故障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;
}
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏,在此先感谢.
我的水晶球说你没有为矢量分配内存.您应该执行以下操作之一:
初始化具有适当大小的向量:
std::vector<double> IPWeights(size_you_need);
Run Code Online (Sandbox Code Playgroud)IPWeights.resize()在分配之前拨打电话:
std::vector<double> IPWeights;
IPWeights.resize(size_you_need);
Run Code Online (Sandbox Code Playgroud)调用IPWeights.push_back()而不是按索引分配:
IPWeights.push_back(0.4500);
IPWeights.push_back(0.2648);
//...
Run Code Online (Sandbox Code Playgroud)