std::bitset<N>::reference
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 функция-элемент) |