std::bitset<N>::operator[]
来自cppreference.com
(1) | ||
bool operator[]( std::size_t pos ) const; |
(C++11 前) | |
constexpr bool operator[]( std::size_t pos ) const; |
(C++11 起) | |
(2) | ||
reference operator[]( std::size_t pos ); |
(C++23 前) | |
constexpr reference operator[]( std::size_t pos ); |
(C++23 起) | |
访问位于位置 pos 的位。第一版本返回位的值,第二版本返回允许修改位的值的 std::bitset::reference 对象。
与 test() 不同,它不会抛出异常:如果 pos 在边界外,那么行为未定义。
参数
pos | - | 要返回的位的位置 |
返回值
1) 请求位的值
2) std::bitset::reference 类型对象,允许写入请求位。
异常
(无)
示例
运行此代码
#include <iostream> #include <bitset> 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()
|
参阅
访问特定位 (公开成员函数) |