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;
}