bitset
中的 test
函数用于检查 bitset
中某个位是否被设置为1。它有两种用法:
检查指定位置的位是否为1。
检查bitset
是否有任何位被设置为1。
基本用法
1. 检查指定位置的位
test
函数的参数是一个位的位置索引,返回值是一个布尔值,如果该位置的位为1,则返回true
,否则返回false
。
1 2 3 4 5 6 7 8 9 10 11 12 #include <bitset> #include <iostream> int main () { std::bitset<8> bs ("11001010" ) ; std::cout << "bs[0] is " << bs.test (0 ) << std::endl; std::cout << "bs[1] is " << bs.test (1 ) << std::endl; return 0 ; }
2. 检查bitset
是否有任何位被设置为1
无参数的 test
函数检查 bitset
中是否有任何位被设置为1。
1 2 3 4 5 6 7 8 9 10 11 12 #include <bitset> #include <iostream> int main () { std::bitset<8> bs1 ("00000000" ) ; std::bitset<8> bs2 ("11001010" ) ; std::cout << "bs1 has any bit set to 1: " << bs1.any () << std::endl; std::cout << "bs2 has any bit set to 1: " << bs2.any () << std::endl; return 0 ; }
特点和注意事项
越界检查 :test
函数会检查给定的位置索引是否有效,如果索引超出范围,会抛出 std::out_of_range
异常。
布尔返回值 :test
返回布尔值,可以直接用于条件语句中。
示例代码
以下是一个完整的示例代码,演示如何使用 test
函数来检查 bitset
中某个位的状态以及是否有任何位被设置为1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <bitset> #include <iostream> int main () { std::bitset<8> bs ("11001010" ) ; std::cout << "bs[3] is " << (bs.test (3 ) ? "set" : "not set" ) << std::endl; std::cout << "bs[5] is " << (bs.test (5 ) ? "set" : "not set" ) << std::endl; std::cout << "bs has any bit set to 1: " << (bs.any () ? "true" : "false" ) << std::endl; std::cout << "bs has all bits set to 0: " << (bs.none () ? "true" : "false" ) << std::endl; return 0 ; }