[ Web Proxy ]
URL:
Viewing: https://ru.cppreference.com/cpp/utility/bitset [Back]  [Original]

std::bitset cppreference.com
cppreference.com

std::bitset

cppreference.com
 
C++
(C++20)
(C++20)
(C++11)
(C++20)
/
(C++11)
(C++11)
(C++11)
(C++17)
 
 
 
<tbody> </tbody>
template< std::size_t N > class bitset;

bitset N . . , .

bitset CopyConstructible CopyAssignable.

- std::bitset constexpr: std::bitset .

( C++23)

N ,

-

-,
()

-

bitset
(public -) []

(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 -) []

,


( ) []

( ) []

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) ,

Web Proxy Viewer  |  New URL  |  Original Page