std::minmax_element
:返回一个对,其中包含一个到最小元素的迭代器作为第一个元素,一个到最大元素的迭代器作为第二个元素。
std::min_element
:返回一个迭代器到范围[first,last)中的最小元素。
std::max_element
:返回一个迭代器,指向范围 [first, last) 中的最大元素。
Does std::minmax_element
uses sorting实现这一目标的完整列表?
是处理的开销返回对 from std::minmax_element
足够值得吗?
您不必担心std::minmax_element
进行任何排序。它以与遍历时完全相同的方式离开范围。它更高效的原因是它可以在一次遍历中找到最大值和最小值,而单独查找最大值和最小值时,您必须进行两次完整的遍历。
std::minmax_element
其复杂度为max(floor(3/2(N−1)), 0)
然而std::max_element
and std::min_element
每个都是max(N-1,0)
所以使用时大约减少了 25% 的操作std::minmax_element
还有一个区别在哪里std::minmax_element
找到最后一个最大元素,同时std::max_element
找到第一个最大的。
因此,如果您需要找到范围的最小值和最大值,那么您应该使用std::minmax_element
。如果您只需要最小值或最大值,那么您应该使用专用版本。处理来自的返回std::minmax_element
即将推出的 C++17 标准和结构化绑定将变得更加容易。你将能够写
auto [min, max] = std::minmax_element(...);
现在该对的第一个元素存储在min
第二个存储在max
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)