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

来自cppreference.com
< cpp‎ | utility‎ | bitset
 
 
工具库
语言支持
类型支持(基本类型、RTTI)
库功能特性测试宏 (C++20)
动态内存管理
程序工具
协程支持 (C++20)
变参数函数
调试支持
(C++26)
三路比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)

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

访问位于位置 pos 的位。第一版本返回位的值,第二版本返回允许修改位的值的 std::bitset::reference 对象。

test() 不同,它不会抛出异常:如果 pos 在边界外,那么行为未定义。

参数

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 << "设置位 0 后,b1 持有 " << 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
设置位 0 后,b1 持有 00101011

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 11 C++98 1. C++ 标准里缺失了此函数的描述
2. 只有非 const 重载
1. 补充相应描述
2. 添加 const 重载
LWG 907 C++98 读取位于位置 pos 的位的行为与 test(pos) 等价,但 test() 可以抛出异常 避免提到 test()

参阅

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