Namespaces
Variants

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

From cppreference.net
Utilities library
bool operator [ ] ( std:: size_t pos ) const ;
(1) (自 C++11 起为 constexpr)
reference operator [ ] ( std:: size_t pos ) ;
(2) (自 C++23 起为 constexpr)

访问位于位置 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++ 标准。

缺陷报告 适用标准 发布时行为 正确行为
LWG 11 C++98 1. C++标准中缺少描述
2. 仅存在非常量重载版本
1. 添加描述
2. 添加常量重载版本
LWG 907 C++98 读取位置 pos 比特的行为等效于
test(pos) ,但 test() 可能抛出异常
避免提及 test()

参见

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