我正在尝试通过使用向量中的 (max_element-min_element) 来设置浮点数的值。我正在循环其中的几个,因此是浮点向量和向量向量。
我收到以下错误:
Expression: Vector iterator not dereferencable
vector<float> amplitudeStorage;
vector<vector<float>> vectorStorage;
int main(){
for (int i = 0; i < amplitudeStorage.size(); i++)
{
AssignWaveAmplitude(amplitudeStorage[i], vectorStorage[i]);
}
}
它发生在函数调用上。该函数如下所示:
void AssignWaveAmplitude(float amplitudeVariable, vector<float> dataVectorr)
{
amplitudeVariable = (*max_element(begin(dataVectorr), end(dataVectorr))) - (*min_element(begin(dataVectorr), end(dataVectorr)));
}
有谁知道如何解决这一问题?
非常感谢。
EDIT1:这个问题的解决方案是这个问题的第一条评论。我使用的一些向量是空的,这导致了错误。
编辑2:
@WhozCraig 所以现在我已经做到了:
for (int i = 0; i < amplitudeStorage.size(); i++) {
amplitudeStorage[i] =AssignWaveAmplitude(vectorStorage[i]);
}
还有这个:
float AssignWaveAmplitude( vector<float> dataVectorr) {
return (*max_element(begin(dataVectorr), end(dataVectorr))) - (*min_element(begin(dataVectorr), end(dataVectorr)));
}
但是所有的花车仍然出现相同的数字。知道为什么吗?
EDIT3:事实证明,浮动错误的原因是因为我输出错误。
我在做:(
cout << lowerBackYAmplitude<< endl
这是幅值存储中的值之一)
我应该一直在做:
for (int i = 0; i < amplitudeStorage.size(); i++)
{
cout << amplitudeStorage[i] << endl;
}