Namespaces
Variants

std::bitset<N>:: reference

From cppreference.net
Utilities library
class reference ;

std::bitset 类包含一个公开可访问的嵌套类 std::bitset::reference 。该类作为代理对象,允许用户与位集的单个比特位进行交互,因为标准 C++ 类型(如引用和指针)不具备精确操作单个比特位的精度。

std::bitset::reference 的主要用途是提供一个可从 operator[] 返回的左值。

通过 std::bitset::reference 对位集进行的任何读写操作,都可能读取或写入整个底层位集。

目录

成员函数

(constructor)
构造引用对象
(公开成员函数)
(destructor)
销毁引用对象
(公开成员函数)
operator=
对引用的位进行赋值
(公开成员函数)
operator bool
返回被引用的位
(公开成员函数)
operator~
返回被引用位的取反值
(公开成员函数)
flip
翻转被引用的位
(公开成员函数)

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

reference ( const reference & ) = default ;
(since C++11)
(constexpr since C++23)

从另一个引用构造该引用。 复制构造函数被隐式声明。 (until C++11)

其他构造函数只能通过 std::bitset 访问。

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

~reference ( ) ;
(constexpr since C++23)

销毁引用对象。

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

reference & operator = ( bool x ) ;
(1) (noexcept since C++11)
(constexpr since C++23)
reference & operator = ( const reference & x ) ;
(2) (noexcept since C++11)
(constexpr since C++23)

为引用的位赋值。

参数

x - 要赋的值

返回值

* this

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

operator bool ( ) const ;
(自 C++11 起为 noexcept)
(自 C++23 起为 constexpr)

返回被引用位的值。

返回值

被引用的位。

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

bool operator~ ( ) const ;
(noexcept since C++11)
(constexpr since C++23)

返回被引用位的逻辑反值。

返回值

被引用位的逻辑反值。

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

reference & flip ( ) ;
(自 C++11 起为 noexcept)
(自 C++23 起为 constexpr)

反转所引用的位。

返回值

* 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

参见

访问特定位
(公开成员函数)