std::bitset<N>::operator[]
来自cppreference.com
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()
|
参阅
访问特定位 (公开成员函数) |