为什么需要 std::minmax_element?

Why need std::minmax_element?

为什么 std::minmax_element 需要 std::min_elementstd::max_element 的组合版本?仅仅是为了节省对比,还是背后有其他好处?

std::min_elementstd::max_element在return之前需要遍历整个容器。如果您使用 std::min_element 后跟 std::max_element 那么这是两次遍历,而如果您使用 std::minmax_element 那么您只需要一次。

所以是的,它 "just" 用于保存比较,但我认为将检索所需数据所需的工作量减半而不损失清晰度是非常值得的。

勾选一个reference page

它列出了两个不同之处

This algorithm is different from std::make_pair(std::min_element(), std::max_element()), not only in efficiency, but also in that this algorithm finds the last biggest element while std::max_element finds the first biggest element.

提到的效率提升,是因为std::minmax_element只需要处理一次数据,而运行std::min_elementstd::max_element都需要处理两次数据。