close
Пространства имён
Варианты
Действия

std::bitset<N>::reference

Материал из cppreference.com
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
std::bitset
Типы элементы
Функции-элементы
Доступ к элементам
Ёмкость
Модификаторы
Преобразования
Функции, не являющиеся элементами
Вспомогательные классы
(C++11)
 
<tbody> </tbody>
class reference;

Класс std::bitset включает в себя доступный публично вложенный класс std::bitset::reference. Этот класс используется в качестве прокси-объекта, чтобы позволить пользователю взаимодействовать с отдельными битами из их набора, так как стандартные типы C++ (вроде ссылки или указателя) построены так, что у них не хватает точности, чтобы указывать на конкретный бит.

Основное применение std::bitset::reference является предоставление левостороннего значения, которое может быть возвращено из operator[].

Любые операции чтения или записи в битовый набор, которые происходят через std::bitset::reference, потенциально могут читать или записывать всю базовую сущность битового набора.

Функции-элементы

(конструктор)
создаёт ссылку. Доступен только из std::bitset
(private функция-элемент)
(деструктор)
~reference
(public функция-элемент)
operator=
присваивает значение bool биту, на который указывает ссылка
(public функция-элемент)
возвращает бит, на который указывает ссылка
(public функция-элемент) [править]
operator ~
возвращает инвертированное значение бита, на который указывает ссылка
(public функция-элемент)
flip
меняет значение бита, на который указывает ссылка, на противоположное
(public функция-элемент)

std::bitset<N>::reference::~reference

<tbody> </tbody>
~reference();
(constexpr начиная с C++23)

Удаляет ссылку.

std::bitset<N>::reference::operator=

<tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody>
(1)
reference& operator=( bool x );
(до C++11)
reference& operator=( bool x ) noexcept;
(начиная с C++11)
(до C++23)
(2)
reference& operator=( const reference& x );
(до C++11)
reference& operator=( const reference& x ) noexcept;
(начиная с C++11)
(constexpr начиная с C++23)

Присваивает значение биту, на который указывает ссылка.

Параметр

x значение для присваивания

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

*this

std::bitset<N>::reference::operator bool

<tbody> </tbody> <tbody class="t-dcl-rev "> </tbody><tbody> </tbody>
operator bool() const;
(до C++11)
operator bool() const noexcept;
(начиная с C++11)
(constexpr начиная с C++23)

Возвращает значение бита, на который указывает ссылка.

Параметры

(нет)

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

Бит, на который указывает ссылка

std::bitset<N>::reference::operator~

<tbody> </tbody> <tbody class="t-dcl-rev "> </tbody><tbody> </tbody>
bool operator~() const;
(до C++11)
bool operator~() const noexcept;
(начиная с C++11)
(constexpr начиная с C++23)

Возвращает инвертированное значение бита, на который указывает ссылка.

Параметры

(нет)

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

Инвертированное значение бита, на который указывает ссылка.

std::bitset<N>::reference::flip

<tbody> </tbody> <tbody class="t-dcl-rev "> </tbody><tbody> </tbody>
reference& flip();
(до C++11)
reference& flip() noexcept;
(начиная с C++11)
(constexpr начиная с C++23)

Инвертирует значение бита, на который указывает ссылка.

Параметры

(нет)

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

*this

Пример

#include <bitset>
#include <iostream>

int main()
{
    std::bitset<4> bs{0b1110};

    std::bitset<4>::reference ref = bs[2];

    auto info = [&](int id) {
        std::cout << id << ") bs: " << bs << "; бит ref: " << ref << '\n';
    };

    info(1);
    ref = false;
    info(2);
    ref = true;
    info(3);
    ref.flip();
    info(4);
    ref = bs[1]; // operator=( const reference& x )
    info(5);

    std::cout << "6) бит ~ref: " << ~ref << '\n';
}

Вывод:

1) bs: 1110; бит ref: 1
2) bs: 1010; бит ref: 0
3) bs: 1110; бит ref: 1
4) bs: 1010; бит ref: 0
5) bs: 1110; бит ref: 1
6) бит ~ref: 0

Смотрите также

обращается к определённому биту
(public функция-элемент) [править]