为什么需要std :: minmax_element?

时间:2015-12-02 10:19:07

标签: c++ stl-algorithm

为什么std::min_element需要std::max_elementstd::minmax_element的组合版本?它只是用于保存比较或其背后的其他好处吗?

2 个答案:

答案 0 :(得分:10)

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

所以是的,它只是“仅仅”用于保存比较,但我认为将所需的工作量减半,以便在不损失清晰度的情况下检索所需的数据是非常值得的。

答案 1 :(得分:3)

检查reference page

列出两个差异

  

此算法与std::make_pair(std::min_element(), std::max_element())不同,不仅在于效率,还在于此算法找到 last 最大元素,而std::max_element找到 first < / em>最大元素。

上述效率提升是因为std::minmax_element只需要处理一次数据,而同时运行std::min_elementstd::max_element则需要处理数据两次。