Может быть, этот вопрос немного Теоретико, но мне интересно, каковы конструктивные стимулы за определение std::minmax
как этотстанд :: MINMAX initializer_list <T> аргумент
template <class T>
pair<T,T> minmax (initializer_list<T> il);
Что означает, IMO, переданный объект , li
будет скопирован, и каждый из его членов также должен быть доступен для копирования.
Хотя, std::min_element
(или для этого вопроса std::max_element
) является более «эффективным» в том смысле, в настоящее время передается только контейнер итераторы (нет необходимости фактически скопировать весь контейнер)
template <class ForwardIterator>
ForwardIterator min_element (ForwardIterator first, ForwardIterator last);
EDIT - на основе Комментарий Joachim Pileborg, initializer_list<T>
Объекты не копируются, поэтому я точно задаю свой вопрос: почему std::minmax
ограничен такими объектами, а не произвольными контейнерами (которые, так сказать, имеют «неконстантный» характер)
Из [эта ссылка] (Http: // ан .cppreference.com/w/cpp/utility/initializer_list): «Копирование' std :: initializer_list' не копирует базовые объекты ». –
@Joachim Pileborg Thx за ценный комментарий, я отредактировал мой вопрос –