ベクトルから (max_element-min_element) を使用して float の値を設定しようとしています。これらのいくつかをループしているため、フロートのベクトルとベクトルのベクトルです。
次のエラーが表示されます。
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:この問題の解決策は、この質問に対する最初のコメントです。使用していたベクトルの一部が空だったため、エラーが発生しました。
EDIT2:
@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
これはamplitudeStorageの値の1つでした)
私はやっていたはずです:
for (int i = 0; i < amplitudeStorage.size(); i++)
{
cout << amplitudeStorage[i] << endl;
}