-1

ベクトルから (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;
                }
4

3 に答える 3