Spec-Zone.ru › C++

std::bitset<N>::reference

class reference;

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

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

Любое чтение или запись битового набора через std::bitset::reference потенциально может привести к чтению или записи всего базового битового набора.

Функции-члены

(constructor)
создаёт ссылку
(открытая функция-член)
(destructor)
уничтожает ссылку
(открытая функция-член)
operator=
присваивает значение биту, на который ссылается
(открытая функция-член)
operator bool
возвращает бит, на который ссылается
(открытая функция-член)
operator~
возвращает инвертированный бит, на который ссылается
(открытая функция-член)
flip
инвертирует бит, на который ссылается
(открытая функция-член)

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

reference( const reference& ) = default;
(начиная с C++11)
(constexpr начиная с C++23)

Создаёт ссылку из другой ссылки. Конструктор копирования объявляется неявно.(до C++11)

Доступ к другим конструкторам возможен только из std::bitset.

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

~reference();
(constexpr начиная с C++23)

Уничтожает ссылку.

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

reference& operator=( bool x );
(1) (noexcept начиная с C++11)
(constexpr начиная с C++23)
constexpr const reference& operator=( bool x ) const noexcept;
(2) (начиная с C++26)
reference& operator=( const reference& x );
(3) (noexcept начиная с C++11)
(constexpr начиная с C++23)

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

Параметры

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

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

*this

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

operator bool() const;
(noexcept начиная с C++11)
(constexpr начиная с C++23)

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

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

Бит, на который ссылается.

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

bool operator~() const;
(noexcept начиная с C++11)
(constexpr начиная с C++23)

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

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

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

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

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 bit: " << 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 bit: " << ~ref << '\n';
}

Вывод:

1) bs: 1110; ref bit: 1
2) bs: 1010; ref bit: 0
3) bs: 1110; ref bit: 1
4) bs: 1010; ref bit: 0
5) bs: 1110; ref bit: 1
6) ~ref bit: 0

См. также

operator[]
доступ к указанному биту
(открытая функция-член)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/bitset/reference

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API