Namespaces
Variants

std::bitset<N>::operator[]

ja.cppreference.net より
 
 
ユーティリティライブラリ
言語サポート
型サポート (基本型、RTTI)
ライブラリ機能テストマクロ (C++20)
プログラムユーティリティ
可変長引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

汎用ユーティリティ
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)(C++20)(C++20)    
(C++20)
swap と 型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
共通ボキャブラリ型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
bool operator[]( std::size_t pos ) const;
(1) (constexpr C++11以降)
reference operator[]( std::size_t pos );
(2) (constexpr C++23以降)

位置 pos のビットにアクセスします。

1) そのビットの値を返します。
2) 値の変更を可能にする std::bitset::reference 型のオブジェクトを返します。

pos < size() が false の場合、動作は未定義です。

(C++26まで)

pos < size() が false の場合:

  • 実装が ハードニングされている場合、契約違反が発生します。
  • 実装がハードニングされていない場合、動作は未定義です。
(C++26以降)

パラメータ

pos - 返されるビットの位置

戻り値

1) 要求されたビットの値。
2) 型 std::bitset::reference のオブジェクト。要求されたビットへの書き込みを可能にします。

例外

例外を送出しません。

例

#include <bitset>
#include <cstddef>
#include <iostream>
int main()
{
    std::bitset<8> b1{0b00101010}; // 42のバイナリリテラル
    for (std::size_t i = 0; i < b1.size(); ++i)
        std::cout << "b1[" << i << "]: " << b1[i] << '\n';
    b1[0] = true; // bitset::referenceを通じて最初のビットを変更
    std::cout << "After setting bit 0, b1 holds " << b1 << '\n';
}

出力:

b1[0]: 0
b1[1]: 1
b1[2]: 0
b1[3]: 1
b1[4]: 0
b1[5]: 1
b1[6]: 0
b1[7]: 0
After setting bit 0, b1 holds 00101011

欠陥報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 11 C++98 1. C++標準での記述が欠落していた
2. 非constオーバーロードのみ存在した
1. 記述を追加
2. constオーバーロードを追加
LWG 907 C++98 pos のビットを読み取る動作は
test(pos) と同等であったが、 test() は例外をスローする可能性がある
test() への言及を回避

関連項目

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