std::bitset
cppreference.com
<tbody>
</tbody>
template< std::size_t N > class bitset; |
||
bitset N . . , .
bitset CopyConstructible CopyAssignable.
|
- |
( C++23) |
| N | , |
-
| -, () |
-
| bitset (public -) | |
( C++20) |
(public -) |
| (public -) | |
| (public -) | |
, , - true (public -) | |
, true (public -) | |
| , (public -) | |
| , , (public -) | |
| (public -) | |
true (public -) | |
false (public -) | |
| (public -) | |
| (public -) | |
unsigned long (public -) | |
(C++11) |
unsigned long long (public -) |
,
| ( ) | |
| ( ) |
(C++11) |
std::bitset ( ) |
, , std::vector<bool> boost::dynamic_bitset<>.
__cpp_lib_constexpr_bitset |
202207L |
(C++23) | constexpr std::bitset
|
__cpp_lib_bitset |
202306L |
(C++26) | std::bitset std::string_view
|
#include <bitset>
#include <cassert>
#include <cstddef>
#include <iostream>
int main()
{
typedef std::size_t length_t, position_t; //
// :
constexpr std::bitset<4> b1;
constexpr std::bitset<4> b2{0xA}; // == 0B1010
std::bitset<4> b3{"0011"}; // constexpr, C++23
std::bitset<8> b4{"ABBA", length_t(4), /*0:*/'A', /*1:*/'B'}; // == 0B0000'0110
// :
std::cout << "b1:" << b1 << "; b2:" << b2 << "; b3:" << b3 << "; b4:" << b4 << '\n';
// :
b3 |= 0b0100; assert(b3 == 0b0111);
b3 &= 0b0011; assert(b3 == 0b0011);
b3 ^= std::bitset<4>{0b1100}; assert(b3 == 0b1111);
// :
b3.reset(); assert(b3 == 0);
b3.set(); assert(b3 == 0b1111);
assert(b3.all() && b3.any() && !b3.none());
b3.flip(); assert(b3 == 0);
// :
b3.set(position_t(1), true); assert(b3 == 0b0010);
b3.set(position_t(1), false); assert(b3 == 0);
b3.flip(position_t(2)); assert(b3 == 0b0100);
b3.reset(position_t(2)); assert(b3 == 0);
// operator[] :
b3[2] = true; assert(true == b3[2]);
// :
assert(b3.count() == 1);
assert(b3.size() == 4);
assert(b3.to_ullong() == 0b0100ULL);
assert(b3.to_string() == "0100");
}
:
b1:0000; b2:1010; b3:0011; b4:00000110
| ( ) | |
| (C++20) | , |