Операции отношения в классе 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 — в противном случае.
|