Главная arrow Программирование С++ arrow Операции отношения в классе RangeArray

Операции отношения в классе RangeArray

Далее приведен код перегруженных операций отношения, которые определены В классе RangeArray.
template<class T, class Allocator>
bool operator==(const RangeArray<T, Allocator> &a, const RangeArray<T, Allocator> &b)
{
if (a. size ()  != b.sizeO) return false; return equal (a. begin (), a.endO, b.beginO);
}
template<class T, class Allocator>
bool operator!=(const RangeArxay<T, Allocator> &a, const RangeArray<T, Allocator> &b)
{
if (a. size ()   != b.sizeO) return true;
return ! equal (a. begin (), a.endO, b.beginO);
}
template<class T, class Allocator>
bool operator<(const RangeArray<T, Allocator> &a,
const RangeArray<T, Allocator> &b) '
{
return lexicographical_compare(а.begin(), а.end(), b.beginO, b.endO);
)
t0nplate<class T, class Allocator> bool operator>(const RangeArray<T, Allocator> &a, const RangeArray<T, Allocator> &b)
{
return b < a;
}
template<class T, class Allocator> bool operator<=(const RangeArray<T, Allocator> &a, const RangeArray<T, Allocator> &b)
{
return !(a > b) ;
}
template<class T, class Allocator> bool operacor>=(consc RangeArray<T, Allocacor> &a, const RangeArray<T, Allocator> &b)
{
return !(a < b) ;
}
Операции operatOr=()  И operator ! = ()  ИСПОЛЬЗУЮТ алгоритм equal () ДЛЯ
определения равенства. Как определено в этом алгоритме, два объекта считаются тождественными, если каждый содержит одни и те же элементы, расположенные в одинаковом порядке.
Операция < использует функцию iexicographicai_compare () для определения того, что один объект меньше другого. Применение этой функции рекомендуется стандартом языка С++. Она сравнивает соответствующие элементы Двух последовательностей до появления первого несовпадения. Если несовпадение обнаружено, функция возвращает true, когда элемент первой последовательности меньше элемента второй, и false — в противном случае.