为什么std::min_element
需要std::max_element
和std::minmax_element
的组合版本?它只是用于保存比较或其背后的其他好处吗?
答案 0 :(得分:10)
std::min_element
和std::max_element
需要在返回之前遍历整个容器。如果您使用std::min_element
后跟std::max_element
,那么这是两次遍历,而如果您使用std::minmax_element
则只需要一次。
所以是的,它只是“仅仅”用于保存比较,但我认为将所需的工作量减半,以便在不损失清晰度的情况下检索所需的数据是非常值得的。
答案 1 :(得分:3)
列出两个差异:
此算法与
std::make_pair(std::min_element(), std::max_element())
不同,不仅在于效率,还在于此算法找到 last 最大元素,而std::max_element
找到 first < / em>最大元素。
上述效率提升是因为std::minmax_element
只需要处理一次数据,而同时运行std::min_element
和std::max_element
则需要处理数据两次。