c++ - std::minmax initializer_list<T> argument -


maybe question little bit theoretic, wonder the design incentives behind defining std::minmax

template <class t> pair<t,t> minmax (initializer_list<t> il); 

which means ,imo, passed object, li copied , each of members must copy-constructible.

while, std::min_element (or matter std::max_element) more "efficient" in sense container iterators being passed (no need copy entire container)

template <class forwarditerator> forwarditerator min_element (forwarditerator first, forwarditerator last); 

edit - based on joachim pileborg comment, initializer_list<t> objects not being copied, i'm pinpointing question - why std::minmax constrained such objects , not arbitrary containers (which have "non-const" nature, speak)

for updated question: minmax can work general case of pair of iterators, called minmax_element. minmax convenience shorthand able write compact things this:

// define a, b, c here int min, max; std::tie(min, max) = std::minmax({a, b, c}); 

...instead of writing this:

// define a, b, c here int min, max; auto list = {a, b, c}; auto result = std::minmax_element(list.begin(), list.end()); min = *result.first; max = *result.second; 

Comments

Popular posts from this blog

java - Plugin org.apache.maven.plugins:maven-install-plugin:2.4 or one of its dependencies could not be resolved -

Round ImageView Android -

How can I utilize Yahoo Weather API in android -