в min_element как и в max_element можно передать свою функцию чтобы сравнивать текущий и след. элементы, но вот какова логика? в мин. например минимальный по умолчанию первый, а после я его сравниваю. Какой тогда элемент запишется на место min если я сравню current > next ? это получается если функция мин элем, то в мин запишется в случае тру next ?
обзови current как smallest, a next как current )
вот как ты ищешь минимум руками? примерно так: int minimum(int const* b, int const* e) { assert(b != e); int smallest = *b++; for(; b != e; ++b) { if( abs(*b) < abs(smallest) ) { smallest = *b; } } return smallest; } теперь ты захотел сам определять порядок и переписал: template<typename Less> int minimum(int const* b, int const* e, Less &&less) { assert(b != e); int smallest = *b++; for(; b != e; ++b) { if( less(*b, smallest) ) { smallest = *b; } } return smallest; } вот и пришел к тому, что ты вызываешь из стандартной библиотеки.
Обсуждают сегодня