Comment puis-je trouver le max élément dans un vecteur (C++)?

Voici mon code. J'ai omis de mentionner le code pour le vecteur, car il n'était pas important.

#include <string>
#include <iostream>
#include <vector>
using namespace std;


int main() {
    vector<int> scores;

    //code to make vector

    cout << "High score: " << scores[std::max(scores.begin(), scores.end())] << endl;
    system("pause");
}

C'est ma compréhension que std::max renvoie un itérateur, mais je ne sais pas vraiment quoi faire avec l'itérateur. J'ai vu l'exemple

*max(scores.begin(), scores.end())

pour obtenir le retour d'un index au lieu d'un itérateur, mais il se l'erreur

Expression: vector iterator not dereferencable

J'ai essayé d'utiliser l'itérateur, puis en utilisant std::distance

vector<int>::iterator high = std::max(scores.begin(), scores.end());
cout << "High score: " << scores[std::distance(scores.begin(), high)] << endl;

mais je reçois l'erreur

Expression: vector subscript is out of range. 

Quelle serait la meilleure façon de résoudre ce problème?

  • Vous utilisez une fonction par des moyens détournés, nommé std::max_element. std::max ne pas faire ce que vous semblez penser que ce n'est, comme vous avez pu facilement découvert par la lecture de la documentation.
InformationsquelleAutor potapeno | 2015-08-22