stl_pair.h
Go to the documentation of this file.00001
00002
00066 #ifndef _PAIR_H
00067 #define _PAIR_H 1
00068
00069 namespace std
00070 {
00072 template<class _T1, class _T2>
00073 struct pair
00074 {
00075 typedef _T1 first_type;
00076 typedef _T2 second_type;
00077
00078 _T1 first;
00079 _T2 second;
00080
00081
00082
00085 pair()
00086 : first(), second() { }
00087
00089 pair(const _T1& __a, const _T2& __b)
00090 : first(__a), second(__b) { }
00091
00093 template<class _U1, class _U2>
00094 pair(const pair<_U1, _U2>& __p)
00095 : first(__p.first), second(__p.second) { }
00096 };
00097
00099 template<class _T1, class _T2>
00100 inline bool
00101 operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
00102 { return __x.first == __y.first && __x.second == __y.second; }
00103
00105 template<class _T1, class _T2>
00106 inline bool
00107 operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
00108 { return __x.first < __y.first
00109 || (!(__y.first < __x.first) && __x.second < __y.second); }
00110
00112 template<class _T1, class _T2>
00113 inline bool
00114 operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
00115 { return !(__x == __y); }
00116
00118 template<class _T1, class _T2>
00119 inline bool
00120 operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
00121 { return __y < __x; }
00122
00124 template<class _T1, class _T2>
00125 inline bool
00126 operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
00127 { return !(__y < __x); }
00128
00130 template<class _T1, class _T2>
00131 inline bool
00132 operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
00133 { return !(__x < __y); }
00134
00145
00146
00147 template<class _T1, class _T2>
00148 inline pair<_T1, _T2>
00149 make_pair(_T1 __x, _T2 __y)
00150 { return pair<_T1, _T2>(__x, __y); }
00151 }
00152
00154
00155 #endif