<utility>
Include the STL
standard header <utility>
to define several templates of general use
throughout the Standard Template Library.
Four template operators --
operator!=
,
operator<=
,
operator>
, and
operator>=
-- define a
total ordering
on pairs of operands of the same type, given definitions of
operator==
and operator<
.
If an implementation
supports namespaces,
these template operators are defined in the
rel_ops
namespace,
nested within the std
namespace.
If you wish to make use of these template operators,
write the declaration:
using namespace std::rel_ops;
which promotes the template operators into the current namespace.
namespace std { template<class T, class Ty2> struct pair; // TEMPLATE FUNCTIONS template<class Ty1, class Ty2> pair<Ty, Ty2> make_pair(Ty1 val1, Ty2 val2); template<class Ty1, class Ty2> bool operator==(const pair<Ty, Ty2>& left, const pair<Ty1, Ty2>& right); template<class Ty1, class Ty2> bool operator!=(const pair<Ty, Ty2>& left, const pair<Ty1, Ty2>& right); template<class Ty1, class Ty2> bool operator<(const pair<Ty, Ty2>& left, const pair<Ty1, Ty2>& right); template<class Ty1, class Ty2> bool operator>(const pair<Ty1, Ty2>& left, const pair<Ty1, Ty2>& right); template<class Ty1, class Ty2> bool operator<=(const pair<Ty1, Ty2>& left, const pair<Ty1, Ty2>& right); template<class Ty1, class Ty2> bool operator>=(const pair<Ty1, Ty2>& left, const pair<Ty1, Ty2>& right); namespace rel_ops { template<class Ty> bool operator!=(const Ty& left, const Ty& right); template<class Ty> bool operator<=(const Ty& left, const Ty& right); template<class Ty> bool operator>(const Ty& left, const Ty& right); template<class Ty> bool operator>=(const Ty& left, const Ty& right); }; };
make_pair
template<class Ty1, class Ty2> pair<Ty1, Ty2> make_pair(Ty1 val1, Ty2 val2);
The template function returns
pair<Ty1, Ty2>(val1, val2)
.
operator!=
template<class Ty> bool operator!=(const Ty& left, const Ty& right); template<class Ty1, class Ty2> bool operator!=(const pair<Ty1, Ty2>& left, const pair<Ty1, Ty2>& right);
The template function returns !(left == right)
.
operator==
template<class Ty1, class Ty2> bool operator==(const pair<Ty1, Ty2>& left, const pair<Ty1, Ty2>& right);
The template function returns
left.first == right.first &&
left.second == right.second
.
operator<
template<class Ty1, class Ty2> bool operator<(const pair<Ty1, Ty2>& left, const pair<Ty1, Ty2>& right);
The template function returns
left.first < right.first ||
!(right.first < left.first &&
left.second < right.second)
.
operator<=
template<class Ty> bool operator<=(const Ty& left, const Ty& right); template<class Ty1, class Ty2> bool operator<=(const pair<Ty1, Ty2>& left, const pair<Ty1, Ty2>& right);
The template function returns !(right < left)
.
operator>
template<class Ty> bool operator>(const Ty& left, const Ty& right); template<class Ty1, class Ty2> bool operator>(const pair<Ty1, Ty2>& left, const pair<Ty1, Ty2>& right);
The template function returns right < left
.
operator>=
template<class Ty> bool operator>=(const Ty& left, const Ty& right); template<class Ty1, class Ty2> bool operator>=(const pair<Ty1, Ty2>& left, const pair<Ty1, Ty2>& right);
The template function returns !(left < right)
.
pair
template<class Ty1, class Ty2> struct pair { typedef Ty1 first_type; typedef Ty2 second_type Ty1 first; Ty2 second; pair(); pair(const Ty1& val1, const Ty2& val2); template<class Other1, class Other2> pair(const pair<Other1, Other2>& right); };
The template class stores a pair of objects,
first
,
of type Ty1
, and
second
,
of type Ty2
. The type definition
first_type
,
is the same as the template parameter Ty1
, while
second_type
,
is the same as the template parameter Ty2
.
The first (default) constructor initializes
first
to Ty1()
and second
to Ty2()
. The second constructor initializes
first
to val1
and second
to val2
. The third (template) constructor initializes
first
to right.first
and second
to right.second
. Ty1
and Ty2
each
need supply only a default constructor, single-argument constructor,
and a destructor.
See also the Table of Contents and the Index.
Copyright © 1994-2002 by P.J. Plauger. Portions derived from work copyright © 1994 by Hewlett-Packard Company. All rights reserved.