Вот мой код. Я пропустил код для вектора, потому что это не было важно.Как найти максимальный элемент в векторе (C++)?
#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");
}
Это мое понимание того, что STD :: макс возвращает итератор, но я действительно не знаю, что делать с итератора. Я видел пример
*max(scores.begin(), scores.end())
, чтобы получить его, чтобы вернуть индекс вместо итератора, но получает ошибку
Expression: vector iterator not dereferencable
Я попытался с помощью итератора, а затем с помощью зОго :: расстояния
vector<int>::iterator high = std::max(scores.begin(), scores.end());
cout << "High score: " << scores[std::distance(scores.begin(), high)] << endl;
, но я получаю ошибку
Expression: vector subscript is out of range.
Какой был бы лучший способ решить эту проблему?
Вы используете функцию, коварно названную ['std :: max_element'] (http://en.cppreference.com/w/cpp/algorithm/max_element). 'std :: max' не делает то, что вы, кажется, думаете, что это так, как вы могли бы легко обнаружить, прочитав точное руководство. –