Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::bitset

      From cppreference.com
      <cpp‎ |utility
       
       
      Utilities library
       
       
      Defined in header<bitset>
      template<std::size_t N>
      class bitset;

      The class templatebitset represents a fixed-size sequence ofN bits. Bitsets can be manipulated by standard logic operators and converted to and from strings and integers. For the purpose of the string representation and of naming directions for shift operations, the sequence is thought of as having its lowest indexed elements at theright, as in the binary representation of integers.

      bitset meets the requirements ofCopyConstructible andCopyAssignable.

      All member functions ofstd::bitset areconstexpr: it is possible to create and usestd::bitset objects in the evaluation of a constant expression.

      (since C++23)

      Contents

      [edit]Template parameters

      N - the number of bits to allocate storage for

      [edit]Member types

      proxy class representing a reference to a bit
      (class)

      [edit]Member functions

      constructs the bitset
      (public member function)[edit]
      (removed in C++20)
      compares the contents
      (public member function)[edit]
      Element access
      accesses specific bit
      (public member function)[edit]
      accesses specific bit
      (public member function)[edit]
      checks if all, any or none of the bits are set totrue
      (public member function)[edit]
      returns the number of bits set totrue
      (public member function)[edit]
      Capacity
      returns the number of bits that the bitset holds
      (public member function)[edit]
      Modifiers
      performs binary AND, OR, XOR and NOT
      (public member function)[edit]
      performs binary shift left and shift right
      (public member function)[edit]
      sets bits totrue or given value
      (public member function)[edit]
      sets bits tofalse
      (public member function)[edit]
      toggles the values of bits
      (public member function)[edit]
      Conversions
      returns a string representation of the data
      (public member function)[edit]
      returns anunsignedlong integer representation of the data
      (public member function)[edit]
      (C++11)
      returns anunsignedlonglong integer representation of the data
      (public member function)[edit]

      [edit]Non-member functions

      performs binary logic operations on bitsets
      (function template)[edit]
      performs stream input and output of bitsets
      (function template)[edit]

      [edit]Helper classes

      hash support forstd::bitset
      (class template specialization)[edit]

      [edit]Notes

      If the size of a bit-set is not known at compile time, or it is necessary to change its size at run-time, the dynamic types such asstd::vector<bool> orboost::dynamic_bitset<> may be used instead.

      Feature-test macroValueStdFeature
      __cpp_lib_constexpr_bitset202207L(C++23)A more constexprstd::bitset
      __cpp_lib_bitset202306L(C++26)Interfacingstd::bitset withstd::string_view

      [edit]Example

      Run this code
      #include <bitset>#include <cassert>#include <cstddef>#include <iostream> int main(){typedefstd::size_t length_t, position_t;// the hints // constructors:constexpr std::bitset<4> b1;constexpr std::bitset<4> b2{0xA};// == 0B1010    std::bitset<4> b3{"0011"};// can also be constexpr since C++23    std::bitset<8> b4{"ABBA", length_t(4),/*0:*/'A',/*1:*/'B'};// == 0B0000'0110 // bitsets can be printed out to a stream:std::cout<<"b1:"<< b1<<"; b2:"<< b2<<"; b3:"<< b3<<"; b4:"<< b4<<'\n'; // bitset supports bitwise operations:    b3|=0b0100;assert(b3==0b0111);    b3&=0b0011;assert(b3==0b0011);    b3^= std::bitset<4>{0b1100};assert(b3==0b1111); // operations on the whole set:    b3.reset();assert(b3==0);    b3.set();assert(b3==0b1111);assert(b3.all()&& b3.any()&&!b3.none());    b3.flip();assert(b3==0); // operations on individual bits:    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); // subscript operator[] is supported:    b3[2]=true;assert(true== b3[2]); // other operations:assert(b3.count()==1);assert(b3.size()==4);assert(b3.to_ullong()== 0b0100ULL);assert(b3.to_string()=="0100");}

      Output:

      b1:0000; b2:1010; b3:0011; b4:00000110

      [edit]See also

      space-efficient dynamic bitset
      (class template specialization)[edit]
      Bit manipulation(C++20) utilities to access, manipulate, and process individual bits and bit sequences
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/bitset&oldid=180895"

      [8]ページ先頭

      ©2009-2025 Movatter.jp