Namespaces
Variants

std::bitset<N>:: reference

From cppreference.net
Utilities library
class reference ;

std::bitset クラスは、公開アクセス可能なネストされたクラスとして std::bitset::reference を含みます。このクラスは、個々のビットを指定するための十分な精度で標準C++型(参照やポインタなど)が構築されていないため、ユーザーがビットセットの個々のビットと対話できるようにするプロキシオブジェクトとして使用されます。

std::bitset::reference の主な用途は、 operator[] から返されるlvalueを提供することです。

bitsetへの読み取りまたは書き込みは、 std::bitset::reference を介して行われる場合、基盤となるbitset全体に対して読み取りまたは書き込みが行われる可能性があります。

目次

メンバー関数

(constructor)
参照を構築する
(public member function)
(destructor)
参照を破棄する
(public member function)
operator=
参照先のビットに値を代入する
(public member function)
operator bool
参照先のビットを返す
(public member function)
operator~
反転した参照先ビットを返す
(public member function)
flip
参照先のビットを反転する
(public member function)

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 since C++23)

参照を破棄します。

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

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

参照先のビットに値を代入します。

パラメータ

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 ;
(C++11以降 noexcept)
(C++23以降 constexpr)

参照されているビットの反転値を返します。

戻り値

参照されているビットの反転値。

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

関連項目

特定のビットにアクセス
(公開メンバ関数)