min |
C++ Library |
template<class T> const T& _cpp_min(const T& x, const T& y)
Returns the minimum of the two items. _cpp_min returns a reference to the smaller of the x and y.
The non-predicate version uses operator< for comparison.
template<class T, BinaryPredicate> const T& _cpp_min(const T& x, const T& y, BinaryPredicate pr)
Returns the minimum of the two items. _cpp_min returns a reference to the smaller of the x and y.
The predicate version uses the predicate function pr for comparison.
Microsoft Specific
NOTE: To avoid conflicts with max and min in WINDEF.H, use _MAX and _MIN. These macros evaluate to _cpp_max and _cpp_min
End Microsoft Specific
#pragma warning (disable: 4786)
#include <algorithm>
#include <iostream>
#include <string>
struct PhoneBook
{
PhoneBook(std::string s, long num)
{
name = s ;
number = num ;
}
friend std::ostream& operator<<(std::ostream&, const PhoneBook&) ;
long number ;
std::string name ;
} ;
std::ostream& operator<<(std::ostream& os, const PhoneBook& rpb)
{
os << rpb.name << "\t" << rpb.number << std::endl ;
return os ;
}
bool compare(const PhoneBook& r1, const PhoneBook& r2)
{
return (r2.name > r1.name) ;
}
int main()
{
//non-predicate version of _MAX
std::cout << "_MAX(10, 30) = " << std::_MAX(10, 30)
<< std::endl ;
//non-predicate version of _MIN
std::cout << "_MIN(10, 30) = " << std::_MIN(10, 30)
<< std::endl ;
PhoneBook s1("Tom", 8612345) ;
PhoneBook s2("Jack", 6782345) ;
//predicate version of _MAX
std::cout << "_MAX(s1, s2, max_PhoneBook) = " << std::_MAX(s1, s2, compare)
<< std::endl ;
//predicate version of _MAX
std::cout << "_MIN(s1, s2, min_PhoneBook) = " << std::_MIN(s1, s2, compare)
<< std::endl ;
return 0 ;
}
_MAX(10, 30) = 30 _MIN(10, 30) = 10 _MAX(s1, s2, max_PhoneBook) = Tom 8612345 _MIN(s1, s2, min_PhoneBook) = Jack 6782345