更新时间:2022-10-15 16:29:30
我的水晶球说你不为矢量分配内存。您应该执行以下操作之一:
初始化适当大小的向量:
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);
// ...
I have a simple C++ code where I define a dynamic array as:
std::vector<double>IPWeights;
and then pass it to a function called reference with a reference (so I changed its content) like:
void reference (std::vector<double> &IPWeights)
and then in my main function, after I changed my arrays content I wanted to print it like:
int size_weights=IPWeights.size();
for (int i=0; i<size_weights; i++)
{
std::cout<<IPWeights[i]<<std::endl;
}
but in the screen I only see "segmentation fault 11".
where the reference is simply looks like:
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;
}
Any advice is appreciated, Thanks in advance.
My crystal ball says that you don't allocate memory for the vector. You should do one of the following:
Initialize vector with appropriate size:
std::vector<double> IPWeights(size_you_need);
Call IPWeights.resize()
before assigning to it:
std::vector<double> IPWeights;
IPWeights.resize(size_you_need);
Call IPWeights.push_back()
instead of assigning by index:
IPWeights.push_back(0.4500);
IPWeights.push_back(0.2648);
//...