76 lines
2.0 KiB
C++
76 lines
2.0 KiB
C++
// Copyright (C) 2003 Davis E. King (davis@dlib.net)
|
|
// License: Boost Software License See LICENSE.txt for the full license.
|
|
#undef DLIB_SEQUENCE_COMPARe_ABSTRACT_
|
|
#ifdef DLIB_SEQUENCE_COMPARe_ABSTRACT_
|
|
|
|
#include "sequence_kernel_abstract.h"
|
|
|
|
#include "../algs.h"
|
|
|
|
|
|
namespace dlib
|
|
{
|
|
|
|
template <
|
|
typename seq_base
|
|
>
|
|
class sequence_compare : public seq_base
|
|
{
|
|
|
|
/*!
|
|
REQUIREMENTS ON T
|
|
T must implement operator< for its type and
|
|
T must implement operator== for its type
|
|
|
|
REQUIREMENTS ON SEQUENCE_BASE
|
|
must be an implementation of sequence/sequence_kernel_abstract.h
|
|
|
|
|
|
POINTERS AND REFERENCES TO INTERNAL DATA
|
|
operator== and operator< do not invalidate pointers or references to
|
|
data members
|
|
|
|
WHAT THIS EXTENSION DOES FOR sequence
|
|
This gives a sequence the ability to compare itself to other
|
|
sequences using the < and == operators.
|
|
!*/
|
|
|
|
public:
|
|
|
|
bool operator< (
|
|
const sequence_compare& rhs
|
|
) const;
|
|
/*!
|
|
ensures
|
|
- returns true if there exists an integer j such that 0 <= j < size()
|
|
and for all integers i such that 0 <= i < j where it is true that
|
|
(*this)[i] <= rhs[i] and (*this)[j] < rhs[j]
|
|
- returns false if there is no j that will satisfy the above conditions
|
|
!*/
|
|
|
|
bool operator== (
|
|
const sequence_compare& rhs
|
|
) const;
|
|
/*!
|
|
ensures
|
|
- returns true if for all i: (*this)[i] == rhs[i] else returns false
|
|
!*/
|
|
|
|
};
|
|
|
|
template <
|
|
typename seq_base
|
|
>
|
|
inline void swap (
|
|
sequence_compare<seq_base>& a,
|
|
sequence_compare<seq_base>& b
|
|
) { a.swap(b); }
|
|
/*!
|
|
provides a global swap function
|
|
!*/
|
|
|
|
}
|
|
|
|
#endif // DLIB_SEQUENCE_COMPARe_ABSTRACT_
|
|
|