std::bitset<N>::reference
class reference; |
Класс std::bitset содержит std::bitset::reference как публичный вложенный класс. Этот класс используется в качестве прокси-объекта, позволяющего пользователям взаимодействовать с отдельными битами множества битов, так как стандартные типы C++ (например, ссылки и указатели) не обладают достаточной точностью для указания отдельных битов.
Основное назначение std::bitset::reference — предоставление lvalue, которое может быть возвращено методом operator[].
Любые чтение или запись в множество битов, происходящие через std::bitset::reference, потенциально считывают или записывают в всё подлежащее множество битов.
Функции-члены
| (конструктор) | создаёт ссылку. Доступен только для самого std::bitset (приватный член-функция) |
| (деструктор) | уничтожает ссылку (публичный член-функция) |
| operator= | присваивает значение bool указанному биту (публичный член-функция) |
| operator bool | возвращает значение указанного бита (публичный член-функция) |
| operator~ | возвращает инвертированное значение указанного бита (публичный член-функция) |
| flip | инвертирует значение указанного бита (публичный член-функция) |
std::bitset<N>::reference::~reference
~reference(); | (constexpr со стандартом C++23) |
Уничтожает ссылку.
std::bitset<N>::reference::operator=
| (1) | ||
reference& operator=( bool x ); | (до стандарта C++11) | |
reference& operator=( bool x ) noexcept; | (со стандартом C++11) (constexpr со стандартом 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
operator bool() const; | (до стандарта C++11) | |
operator bool() const noexcept; | (со стандартом C++11) (constexpr со стандартом C++23) |
Возвращает значение указанного бита.
Параметры
(нет)
Возвращаемое значение
Значение указанного бита.
std::bitset<N>::reference::operator~
bool operator~() const; | (до стандарта C++11) | |
bool operator~() const noexcept; | (со стандартом C++11) (constexpr со стандартом C++23) |
Возвращает инвертированное значение указанного бита.
Параметры
(нет)
Возвращаемое значение
Инвертированное значение указанного бита.
std::bitset<N>::reference::flip
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 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/w/cpp/utility/bitset/reference