std::bitset<N>:: test
From cppreference.net
C++
Utilities library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::bitset
| Member types | ||||
| Member functions | ||||
|
(until C++20)
|
||||
| Element access | ||||
|
bitset::test
|
||||
| Capacity | ||||
| Modifiers | ||||
| Conversions | ||||
|
(C++11)
|
||||
| Non-member functions | ||||
| Helper classes | ||||
|
(C++11)
|
||||
|
bool
test
(
std::
size_t
pos
)
const
;
|
(自 C++23 起为 constexpr) | |
返回位于位置 pos (从0开始计数)的比特值。
与 operator[] 不同,它会执行边界检查。
目录 |
参数
| pos | - | 要返回的比特位位置(从0开始计数) |
返回值
true 表示请求的位已设置, false 表示未设置。
异常
若 pos 不对应有效的位位置,则抛出 std::out_of_range 。
示例
运行此代码
#include <bit> #include <bitset> #include <cassert> #include <iostream> #include <stdexcept> int main() { std::bitset<10> b1("1111010000"); std::size_t idx = 0; while (idx < b1.size() && !b1.test(idx)) ++idx; assert(static_cast<int>(idx) == std::countr_zero(b1.to_ulong())); if (idx < b1.size()) std::cout << "第一个设置位位于索引 " << idx << '\n'; else std::cout << "无设置位\n"; try { std::bitset<0B10'1001'1010> bad; if (bad.test(bad.size())) std::cout << "预期之外的输出!\n"; } catch (std::out_of_range const& ex) { std::cout << "异常: " << ex.what() << '\n'; } }
可能的输出:
第一个设置位位于索引 4 异常: bitset::test: __position (which is 666) >= _Nb (which is 666)
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用标准 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 2250 | C++98 |
若
pos
不对应
有效位位置时行为未定义 |
此情况下始终
抛出异常 |
参见
|
访问特定位
(公开成员函数) |
|
|
(C++20)
|
td> 计算无符号整数中
1
位的数量
|
|
(C++20)
|
检查数字是否为
2
的整数次幂
(函数模板) |