Поделиться через


<memory> Операторов

оператор!=

Проверяет неравенство между объектами.

template <class Type, class Other>
bool operator!=(
    const allocator<Type>& left,
    const allocator<Other>& right) throw();

template <class T, class Del1, class U, class Del2>
bool operator!=(
    const unique_ptr<T, Del1>& left,
    const unique_ptr<U&, Del2>& right);

template <class Ty1, class Ty2>
bool operator!=(
    const shared_ptr<Ty1>& left,
    const shared_ptr<Ty2>& right);

Параметры

left
Один из объектов для проверки на неравенство.

right
Один из объектов для проверки на неравенство.

Тай1
Тип, управляемый левым общим указателем.

Тай2
Тип, управляемый правым общим указателем.

Возвращаемое значение

true Значение , если объекты не равны; false Значение , если объекты равны.

Замечания

Первый оператор шаблона возвращает значение false. (Все распределители по умолчанию равны.)

Второй и третий операторы шаблона возвращают !(left == right).

Пример

В первом примере кода показаны результаты сравнения объектов распределителя.

// memory_op_me.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
#include <vector>

using namespace std;

int main( )
{
   allocator<double> Alloc;
   vector <char>:: allocator_type v1Alloc;

   if ( Alloc != v1Alloc )
      cout << "The allocator objects Alloc & v1Alloc not are equal."
           << endl;
   else
      cout << "The allocator objects Alloc & v1Alloc are equal."
           << endl;
}
The allocator objects Alloc & v1Alloc are equal.

Следующий пример кода сравнивает общие указатели с выделенными объектами:

// std__memory__operator_ne.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>

int main()
    {
    std::shared_ptr<int> sp0(new int(0));
    std::shared_ptr<int> sp1(new int(0));

    std::cout << "sp0 != sp0 == " << std::boolalpha
        << (sp0 != sp0) << std::endl;
    std::cout << "sp0 != sp1 == " << std::boolalpha
        << (sp0 != sp1) << std::endl;

    return (0);
    }
sp0 != sp0 == false
sp0 != sp1 == true

operator==

Проверяет равенство между объектами.

template <class Type, class Other>
bool operator==(
    const allocator<Type>& left,
    const allocator<Other>& right) throw();

template <class Ty1, class Del1, class Ty2, class Del2>
bool operator==(
    const unique_ptr<Ty1, Del1>& left,
    const unique_ptr<Ty2, Del2>& right);

template <class Ty1, class Ty2>
bool operator==(
    const shared_ptr<Ty1>& left;,
    const shared_ptr<Ty2>& right);

Параметры

left
Один из объектов для проверки на равенство.

right
Один из объектов для проверки на равенство.

Тай1
Тип, управляемый левым общим указателем.

Тай2
Тип, управляемый правым общим указателем.

Возвращаемое значение

Значение true, если объекты равны, значение false, если объекты не равны.

Замечания

Первый оператор шаблона возвращает значение true. (Все распределители по умолчанию равны.)

Второй и третий операторы шаблона возвращают left.get() == right.get().

Пример

В первом примере кода показаны результаты сравнения объектов распределителя, созданных различными способами.

// memory_op_eq.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
#include <vector>

using namespace std;

int main( )
{
   allocator<char> Alloc;
   vector <int>:: allocator_type v1Alloc;

   allocator<char> cAlloc(Alloc);
   allocator<int> cv1Alloc(v1Alloc);

   if ( cv1Alloc == v1Alloc )
      cout << "The allocator objects cv1Alloc & v1Alloc are equal."
           << endl;
   else
      cout << "The allocator objects cv1Alloc & v1Alloc are not equal."
           << endl;

   if ( cAlloc == Alloc )
      cout << "The allocator objects cAlloc & Alloc are equal."
           << endl;
   else
      cout << "The allocator objects cAlloc & Alloc are not equal."
           << endl;
}
The allocator objects cv1Alloc & v1Alloc are equal.
The allocator objects cAlloc & Alloc are equal.

Следующий пример кода сравнивает общие указатели с выделенными объектами:

// std__memory__operator_eq.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>

int main()
    {
    std::shared_ptr<int> sp0(new int(0));
    std::shared_ptr<int> sp1(new int(0));

    std::cout << "sp0 == sp0 == " << std::boolalpha
        << (sp0 == sp0) << std::endl;
    std::cout << "sp0 == sp1 == " << std::boolalpha
        << (sp0 == sp1) << std::endl;

    return (0);
    }
sp0 == sp0 == true
sp0 == sp1 == false

operator>=

Проверяет, больше или равен один объект второму объекту.

template <class T, class Del1, class U, class Del2>
bool operator>=(
    const unique_ptr<T, Del1>& left,
    const unique_ptr<U, Del2>& right);

template <class Ty1, class Ty2>
bool operator>=(
    const shared_ptr<Ty1>& left,
    const shared_ptr<Ty2>& right);

Параметры

left
Один из сравниваемых объектов.

right
Один из сравниваемых объектов.

Тай1
Тип, управляемый левым общим указателем.

Тай2
Тип, управляемый правым общим указателем.

Замечания

Операторы шаблона возвращают left.get() >= right.get().

operator<

Проверяет, меньше ли один объект второго объекта.

template <class T, class Del1, class U, class Del2>
bool operator<(
    const unique_ptr<T, Del1>& left,
    const unique_ptr<U&, Del2>& right);

template <class Ty1, class Ty2>
bool operator<(
    const shared_ptr<Ty1>& left,
    const shared_ptr<Ty2>& right);

Параметры

left
Один из сравниваемых объектов.

right
Один из сравниваемых объектов.

Тай1
Тип, управляемый левым указателем.

Тай2
Тип, управляемый правым указателем.

operator<=

Проверяет, меньше или равен один объект второму объекту.

template <class T, class Del1, class U, class Del2>
bool operator<=(
    const unique_ptr<T, Del1>& left,
    const unique_ptr<U&, Del2>& right);

template <class Ty1, class Ty2>
bool operator<=(
    const shared_ptr<Ty1>& left,
    const shared_ptr<Ty2>& right);

Параметры

left
Один из сравниваемых объектов.

right
Один из сравниваемых объектов.

Тай1
Тип, управляемый левым общим указателем.

Тай2
Тип, управляемый правым общим указателем.

Замечания

Операторы шаблона возвращают left.get() <= right.get()

operator>

Проверяет, больше ли один объект второго объекта.

template <class Ty1, class Del1, class Ty2, class Del2>
bool operator>(
    const unique_ptr<Ty1, Del1>& left,
    const unique_ptr<Ty2&, Del2gt;& right);

template <class Ty1, class Ty2>
bool operator>(
    const shared_ptr<Ty1>& left,
    const shared_ptr<Ty2>& right);

Параметры

left
Один из сравниваемых объектов.

right
Один из сравниваемых объектов.

Тай1
Тип, управляемый левым общим указателем.

Тай2
Тип, управляемый правым общим указателем.

operator<<

Записывает в поток общий указатель.

template <class Elem, class Tr, class Ty>
std::basic_ostream<Elem, Tr>& operator<<(std::basic_ostream<Elem, Tr>& out,
    shared_ptr<Ty>& sp);

Параметры

Elem
Тип элемента потока.

Tr
Тип признаков элемента потока.

Ty
Тип, управляемый общим указателем.

out
Выходной поток.

sp
Общий указатель.

Замечания

Функция-шаблон возвращает out << sp.get().

Пример

// std__memory__operator_sl.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>

int main()
    {
    std::shared_ptr<int> sp0(new int(5));

    std::cout << "sp0 == " << sp0 << " (varies)" << std::endl;

    return (0);
    }
sp0 == 3f3040 (varies)