C++11有一个函数std::minmax_element
,它返回一对值。然而,处理和阅读这个函数相当困难,并且会产生一个额外的、后来无用的变量来污染作用域。
auto lhsMinmax = std::minmax_element(lhs.begin(), lhs.end());
int &lhsMin = *(lhsMinMax.first);
int &lhsMax = *(lhsMinmax.second);
有没有更好的方法来做这件事?比如说:
int lhsMin;
int lhsMax;
std::make_pair<int&, int&>(lhsMin, lhsMax).swap(
std::minmax_element(lhs.begin(), lhs.end()));
minmax_element
相对于同时使用min_element
和max_element
有什么效率优势吗? - Saurav Sahu/usr/include/c++/6.2.1/bits/stl_algo.h
中。minmax_element
只在其中迭代一次范围,因此,在GCC的实现中,它比单独执行min_element
和max_element
更有效。 - The Vee