1.使用max/min时可以给一个比较函数指针。
#include <algorithm>
using namespace std;
/* function that compares two pointers by comparing the values to which they point
*/
bool int_ptr_less (int* a, int* b)
{
return *a < *b;
}
int main()
{
int x = 17;
int y = 42;
int* px = &x;
int* py = &y;
int* pmax;
// call max() with special comparison function
pmax = max (px, py, int_ptr_less);
//...
}
这是源代码(MSVC7):
template<class _Ty,
class _Pr> inline
const _Ty& _MAX(const _Ty& _Left, const _Ty& _Right, _Pr _Pred)
{ // return larger of _Left and _Right using _Pred
return (_Pred(_Left, _Right) ? _Right : _Left);
}
2.设置boolalpha可以让流输出bool值的字符串形式
cout << boolalpha ;
bool b = true;
cout << b <<"*********"<<!b << endl;
结果:
true*********false
3。一下代码可以测试你的系统各类型的范围
#include <iostream>
#include <limits>
#include <string>
using namespace std;
int main()
{
// use textual representation for bool
cout << boolalpha;
// print maximum of integral types
cout << "max(short): " << numeric_limits<short>::max() << endl;
cout << "max(int): " << numeric_limits<int>::max() << endl;
cout << "max(long): " << numeric_limits<long>::max() << endl;
cout << endl;
// print maximum of floating-point types
cout << "max(float): "
<< numeric_limits<float>::max() << endl;
cout << "max(double): "
<< numeric_limits<double>::max() << endl;
cout << "max(long double): "
<< numeric_limits<long double>::max() << endl;
cout << endl;
// print whether char is signed
cout << "is_signed(char): "
<< numeric_limits<char>::is_signed << endl;
cout << endl;
// print whether numeric limits for type string exist
cout << "is_specialized(string): "
<< numeric_limits<string>::is_specialized << endl;
}