You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
2.8 KiB
C++
123 lines
2.8 KiB
C++
// Copyright (C) 2005 Davis E. King (davis@dlib.net)
|
|
// License: Boost Software License See LICENSE.txt for the full license.
|
|
#ifndef DLIB_SET_COMPARe_1_
|
|
#define DLIB_SET_COMPARe_1_
|
|
|
|
#include "set_compare_abstract.h"
|
|
|
|
#include "../algs.h"
|
|
|
|
|
|
|
|
namespace dlib
|
|
{
|
|
|
|
template <
|
|
typename set_base
|
|
>
|
|
class set_compare_1 : public set_base
|
|
{
|
|
|
|
public:
|
|
|
|
bool operator< (
|
|
const set_compare_1& rhs
|
|
) const;
|
|
|
|
bool operator== (
|
|
const set_compare_1& rhs
|
|
) const;
|
|
|
|
};
|
|
|
|
|
|
template <
|
|
typename set_base
|
|
>
|
|
inline void swap (
|
|
set_compare_1<set_base>& a,
|
|
set_compare_1<set_base>& b
|
|
) { a.swap(b); }
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
// ----------------------------------------------------------------------------------------
|
|
// member function definitions
|
|
// ----------------------------------------------------------------------------------------
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
template <
|
|
typename set_base
|
|
>
|
|
bool set_compare_1<set_base>::
|
|
operator< (
|
|
const set_compare_1<set_base>& rhs
|
|
) const
|
|
{
|
|
bool result = false;
|
|
if (set_base::size() < rhs.size())
|
|
result = true;
|
|
|
|
if (set_base::size() == rhs.size())
|
|
{
|
|
rhs.reset();
|
|
set_base::reset();
|
|
while (rhs.move_next())
|
|
{
|
|
set_base::move_next();
|
|
if (set_base::element() < rhs.element())
|
|
{
|
|
result = true;
|
|
break;
|
|
}
|
|
else if (rhs.element() < set_base::element())
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
set_base::reset();
|
|
rhs.reset();
|
|
|
|
return result;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
template <
|
|
typename set_base
|
|
>
|
|
bool set_compare_1<set_base>::
|
|
operator== (
|
|
const set_compare_1<set_base>& rhs
|
|
) const
|
|
{
|
|
bool result = true;
|
|
if (set_base::size() != rhs.size())
|
|
result = false;
|
|
|
|
|
|
rhs.reset();
|
|
set_base::reset();
|
|
while (rhs.move_next() && set_base::move_next())
|
|
{
|
|
if (!(rhs.element() == set_base::element()))
|
|
{
|
|
result = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
set_base::reset();
|
|
rhs.reset();
|
|
|
|
return result;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
}
|
|
|
|
#endif // DLIB_SET_COMPARe_1_
|
|
|