std::bitset<N>::reference
class reference; |
Класс std::bitset содержит std::bitset::reference в качестве общедоступного вложенного класса. Этот класс используется как прокси-объект, позволяющий пользователям взаимодействовать с отдельными битами битового набора, поскольку стандартные типы C++ (такие как ссылки и указатели) не обладают достаточной точностью для обозначения отдельных битов.
Основное назначение std::bitset::reference — предоставить lvalue, которое может быть возвращено из operator[].
Любое чтение или запись битового набора через std::bitset::reference потенциально может привести к чтению или записи всего базового битового набора.
Функции-члены
|
(constructor) | создаёт ссылку (открытая функция-член) |
| уничтожает ссылку (открытая функция-член) |
|
|
operator= | присваивает значение биту, на который ссылается (открытая функция-член) |
| возвращает бит, на который ссылается (открытая функция-член) |
|
|
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
См. также
| доступ к указанному биту (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/bitset/reference