sort и binary_search — лишь две функции из целого семейства. В библиотеке C++ есть
полка маленьких, быстрых, хорошо проверенных функций для того, ради чего вы
снова и снова пишете циклы: наименьший элемент, сколько семёрок, сумма, первый
ноль. Знать их — значит экономить время и, что важнее, избегать ошибок. Все они
принимают те же два аргумента, что вы уже знаете: откуда начать и где
остановиться.
Набор инструментов
Для 4 7 -2 9 0 7 -2 3 программа печатает min -2 at 2, max 9 at 3,
sevens 2, sum 26 и first zero at 4. Три вещи, на которые стоит обратить
внимание:
min_element,max_elementиfindвозвращают позицию, а не значение — того же рода, чтоa.begin().*lowчитает значение в этой позиции, аlow - a.begin()превращает её в индекс.autoпоручает компилятору назвать тип — он длинный, и выписывать его незачем.- Когда
findничего не находит, он возвращаетa.end()— позицию за последним элементом. Сравните сa.end()до того, как читать*it. accumulate(a.begin(), a.end(), 0LL)прибавляет всё к начальному значению — и у суммы тип этого значения. С обычным0сумма —int, и 10⁵ чисел по 10⁵ его переполняют.0LLделает еёlong long.
| Функция | Даёт |
|---|---|
min_element(b, e), max_element(b, e) | позицию наименьшего / наибольшего (первого из равных) |
count(b, e, x) | сколько элементов равны x |
find(b, e, x) | позицию первого или |