头文件algorithm
【C++ 98】
default (1)
template const T& min (const T& a, const T& b);
custom (2)
template
const T& min (const T& a, const T& b, Compare comp);
【C++ 11】
default (1)
template const T& min (const T& a, const T& b);
custom (2)
template
const T& min (const T& a, const T& b, Compare comp);
initializer list (3)
template T min (initializer_list il);
template
T min (initializer_list il, Compare comp);
【C++ 14】
default (1)
template constexpr const T& min (const T& a, const T& b);
custom (2)
template
constexpr const T& min (const T& a, const T& b, Compare comp);
initializer list (3)
template constexpr T min (initializer_list il);
template
constexpr T min (initializer_list il, Compare comp);
返回最小的
返回a和b中的最小值。 如果两者都是等价的,则返回a。
初始化列表(3)的版本返回列表中所有元素中最小的元素。 如果这些不止一个,则返回第一个。
该函数使用operator <(或comp,如果提供)来比较值。
此函数模板(C ++ 98)的行为等效于:
template const T& min (const T& a, const T& b) {
return !(b
T应支持用operator <进行比较。:
【C++ 98】T应是可复制的。
【C++ 11】对于(3),T应是可复制的。
作为参数传递的值中较小的值。
// min example
#include // std::cout
#include // std::min
int main () {
std::cout << "min(1,2)==" << std::min(1,2) << '\n';
std::cout << "min(2,1)==" << std::min(2,1) << '\n';
std::cout << "min('a','z')==" << std::min('a','z') << '\n';
std::cout << "min(3.14,2.72)==" << std::min(3.14,2.72) << '\n';
return 0;
}
头文件algorithm
【C++ 98】
default (1)
template const T& max (const T& a, const T& b);
custom (2)
template
const T& max (const T& a, const T& b, Compare comp);
【C++ 11】
default (1)
template const T& max (const T& a, const T& b);
custom (2)
template
const T& max (const T& a, const T& b, Compare comp);
initializer list (3)
template T max (initializer_list il);
template
T max (initializer_list il, Compare comp);
【C++ 14】
default (1)
template constexpr const T& max (const T& a, const T& b);
custom (2)
template
constexpr const T& max (const T& a, const T& b, Compare comp);
initializer list (3)
template constexpr T max (initializer_list il);
template
constexpr T max (initializer_list il, Compare comp);
返回最大的
返回a和b中的最大值。 如果两者都是等价的,则返回a。
初始化列表(3)的版本返回列表中所有元素中最大的一个。 如果这些不止一个,则返回第一个。
该函数使用operator <(或comp,如果提供)来比较值。
此函数模板(C ++ 98)的行为等效于:
template const T& max (const T& a, const T& b) {
return (a
T应支持用operator <进行比较:
【C++ 98】T应是可复制的。
【C++ 11】对于(3),T应是可复制的。
作为参数传递的最大值。
// max example
#include // std::cout
#include // std::max
int main () {
std::cout << "max(1,2)==" << std::max(1,2) << '\n';
std::cout << "max(2,1)==" << std::max(2,1) << '\n';
std::cout << "max('a','z')==" << std::max('a','z') << '\n';
std::cout << "max(3.14,2.73)==" << std::max(3.14,2.73) << '\n';
return 0;
}
头文件algorithm
【C++ 11】
default (1)
template
pair minmax (const T& a, const T& b);
custom (2)
template
pair minmax (const T& a, const T& b, Compare comp);
initializer list (3)
template
pair minmax (initializer_list il);
template
pair minmax (initializer_list il, Compare comp);
【C++ 14】
default (1)
template
constexpr pair minmax (const T& a, const T& b);
custom (2)
template
constexpr pair minmax (const T& a, const T& b, Compare comp);
initializer list (3)
template
constexpr pair minmax (initializer_list il);
template
constexpr pair minmax (initializer_list il, Compare comp);
返回最小和最大的元素
返回一对最小的a和b作为第一个元素,最大的作为第二个元素。 如果两者都是等价的,则函数返回make_pair(a,b)。
initializer lists (3)的版本返回一对,列表中所有元素中的最小元素作为第一个元素(第一个元素,如果有多个元素),最大的元素作为第二个元素(最后一个,如果有的话,最后一个,如果 不止一个)。
该函数使用operator <(或comp,如果提供)来比较值。
此函数模板(version (1))的行为等效于:
template pair minmax (const T& a, const T& b) {
return (b
T应支持用operator <进行比较。对于(3),T应是可复制的。
作为参数传递的值中较小的值。
// minmax example
#include // std::cout
#include // std::minmax
int main () {
auto result = std::minmax({1,2,3,4,5});
std::cout << "minmax({1,2,3,4,5}): ";
std::cout << result.first << ' ' << result.second << '\n';
return 0;
}
头文件algorithm
default (1)
template
ForwardIterator min_element (ForwardIterator first, ForwardIterator last);
custom (2)
template
ForwardIterator min_element (ForwardIterator first, ForwardIterator last, Compare comp);
返回范围内的最小元素
返回指向范围[first,last]中具有最小值的元素的迭代器。
比较是使用operator <作为第一个版本,或comp作为第二个版本; 如果没有其他元素比它少,则元素是最小的。 如果多个元素满足此条件,则迭代器返回指向第一个这样的元素。
此函数模板的行为等效于:
template
ForwardIterator min_element ( ForwardIterator first, ForwardIterator last )
{
if (first==last) return last;
ForwardIterator smallest = first;
while (++first!=last)
if (*first<*smallest) // or: if (comp(*first,*smallest)) for version (2)
smallest=first;
return smallest;
}
迭代器到范围中的最小值,如果范围为空则为last。
// min_element/max_element example
#include // std::cout
#include // std::min_element, std::max_element
bool myfn(int i, int j) { return i
头文件algorithm
default (1)
template
ForwardIterator max_element (ForwardIterator first, ForwardIterator last);
custom (2)
template
ForwardIterator max_element (ForwardIterator first, ForwardIterator last,
Compare comp);
返回范围内的最大元素
返回指向范围[first,last]中具有最大值的元素的迭代器。
比较是使用operator <作为第一个版本,或comp作为第二个版本; 如果没有其他元素没有比它少,则元素是最大的。 如果多个元素满足此条件,则迭代器返回指向第一个这样的元素。
此函数模板的行为等效于:
template
ForwardIterator max_element ( ForwardIterator first, ForwardIterator last )
{
if (first==last) return last;
ForwardIterator largest = first;
while (++first!=last)
if (*largest<*first) // or: if (comp(*largest,*first)) for version (2)
largest=first;
return largest;
}
迭代器到范围中的最大值,如果范围为空则为last。
// min_element/max_element example
#include // std::cout
#include // std::min_element, std::max_element
bool myfn(int i, int j) { return i
头文件algorithm
default (1)
template
pair
minmax_element (ForwardIterator first, ForwardIterator last);
custom (2)
template
pair
minmax_element (ForwardIterator first, ForwardIterator last, Compare comp);
返回范围内的最小和最大元素
返回一个迭代器对,该迭代器指向范围[first,last]中最小值为第一个元素的元素,最大值为第二个元素。
使用运算符<对于第一个版本执行比较,或对于第二个版本执行comp。
如果多个等效元素具有最小值,则第一个迭代器指向第一个这样的元素。
如果多个等效元素具有最大值,则第二个迭代器指向最后一个这样的元素。
具有迭代器的对,其指向具有[first,last]范围中的最小值的元素作为第一元素,并且最大值作为第二元素。
pair是中定义的类模板。
// minmax_element
#include // std::cout
#include // std::minmax_element
#include // std::array
int main () {
std::array foo {3,7,2,9,5,8,6};
auto result = std::minmax_element (foo.begin(),foo.end());
// print result:
std::cout << "min is " << *result.first;
std::cout << ", at position " << (result.first-foo.begin()) << '\n';
std::cout << "max is " << *result.second;
std::cout << ", at position " << (result.second-foo.begin()) << '\n';
return 0;
}