Наибольшее значение
Третий шаблон — поиск наибольшего значения. Представьте, что вы перебираете стопку экзаменационных работ, чтобы найти лучшую. Вы берёте первую работу. Затем смотрите остальные по одной, и когда попадается работа лучше той, что у вас в руке, берёте её вместо прежней. В конце в руке лучшая работа. В коде работа в вашей руке — это переменная:
std::vector<int> scores = {72, 45, 90, 38, 64};
int highest = scores[0];
for (int score : scores) {
if (score > highest) {
highest = score;
}
}
std::cout << "Лучший балл: " << highest << std::endl;Лучший балл: 90Переменная highest начинается с первого элемента. Затем цикл сравнивает с ней каждый балл: 72 не больше 72, 45 тоже, а вот 90 больше, поэтому highest становится равной 90. Ни 38, ни 64 не больше 90, так что 90 остаётся до конца.
Почему не начать с 0? Потому что 0 может не быть среди значений. Если все значения отрицательные, например зимние температуры {-5, -2, -8}, начальный 0 остался бы наибольшим, и программа вывела бы 0 — температуру, которой в векторе вообще нет. Первый элемент — всегда надёжное начало, если только вектор не пуст.
Наименьшее значение ищут так же, только с < вместо >.
Иногда сравнивают одно, а запомнить хотят другое. Чтобы найти самое длинное имя, сравните размеры имён, а сохраните само имя:
std::vector<std::string> names = {"Ева", "Христофор", "Адам"};
std::string longest = names[0];
for (std::string name : names) {
if (name.size() > longest.size()) {
longest = name;
}
}
std::cout << "Самое длинное имя: " << longest << std::endl;Самое длинное имя: ХристофорЗадание
- 1
В векторе
pricesлежат цены наушников в интернет-магазине. Создайте переменнуюhighestтипаintс первой ценой,prices[0]. - 2
Пройдите по
pricesциклом, и когда цена окажется большеhighest, сохраняйте её вhighest. После цикла выведите результат в видеСамая высокая цена: 2499. - 3
Найдите цену самых дешёвых наушников так же: с переменной
lowest, которая начинается с первой цены, и с<вместо>. Выведите результат в видеСамая низкая цена: 179.