名前空間
変種
操作

std::bitset::bitset

提供: cppreference.com
< cpp‎ | utility‎ | bitset
 
 
 
 
(1)
bitset();
(C++11未満)
constexpr bitset();
(C++11以上)
(2)
bitset( unsigned long val );
(C++11未満)
constexpr bitset( unsigned long long val );
(C++11以上)
(3)
template< class CharT, class Traits, class Alloc >

explicit bitset( const std::basic_string<CharT,Traits,Alloc>& str,
                 typename std::basic_string<CharT,Traits,Alloc>::size_type pos = 0,
                 typename std::basic_string<CharT,Traits,Alloc>::size_type n =

                     std::basic_string<CharT,Traits,Alloc>::npos);
(C++11未満)
template< class CharT, class Traits, class Alloc >

explicit bitset( const std::basic_string<CharT,Traits,Alloc>& str,
                 typename std::basic_string<CharT,Traits,Alloc>::size_type pos = 0,
                 typename std::basic_string<CharT,Traits,Alloc>::size_type n =
                     std::basic_string<CharT,Traits,Alloc>::npos,
                 CharT zero = CharT('0'),

                 CharT one = CharT('1'));
(C++11以上)
template< class CharT >

explicit bitset( const CharT* str,
                 typename std::basic_string<CharT>::size_type n =
                     std::basic_string<CharT>::npos,
                 CharT zero = CharT('0'),

                 CharT one = CharT('1'));
(4) (C++11以上)

いくつかのオプショナルなデータソースのいずれかから新しいビットセットを構築します。

1) デフォルトコンストラクタ。 すべてのビットがゼロに設定されたビットセットを構築します。
2) 最初の (最も右の、最下位の) M ビットの位置を val の対応するビット値に初期化して、ビットセットを構築します。 ただし Munsigned long long のビット数と構築中のビットセットのビット数 N の小さい方です。 M が N より小さい (ビットセットが 32 (C++11未満)64 (C++11以上) ビット (unsigned long (C++11以上)long の一般的な実装) より長い) 場合、残りのビット位置はゼロに初期化されます。
3) std::basic_string str 内の文字を使用してビットセットを構築します。 オプションで開始位置 pos、長さ n、およびセットされているビット (one) とセットされていないビット (zero) のための代替値を表す文字を指定することができます。 文字値の比較には Traits::eq() が使用されます。
初期化文字列の有効な長さは min(n, str.size() - pos) です。
pos > str.size() の場合、このコンストラクタは std::out_of_range を投げます。 str 内の調べられるいずれかの文字が zero でも one でもない場合は、 std::invalid_argument を投げます。
4) (3) と同様ですが、 std::basic_string の代わりに CharT* を使用します。 bitset(n == basic_string<CharT>::npos ? basic_string<CharT>(str) : basic_string<CharT>(str, n), 0, n, zero, one) と同等です。

目次

[編集] 引数

val - ビットセットを初期化するために使用する数値
str - ビットセットを初期化するために使用する文字列
pos - str の開始オフセット
n - str から使用する文字数
one - str 内のセットされているビットのための代替文字
zero - str 内のセットされていないビットのための代替文字

[編集] 例外

1) (なし)
2) (なし)
(C++11未満)
1)
noexcept 指定:  
noexcept
  
2)
noexcept 指定:  
noexcept
  
(C++11以上)
3) pos > str.size() の場合は std::out_of_range、 いずれかの文字が one でも zero でもない場合は std::invalid_argument
4) いずれかの文字が one でも zero でもない場合は std::invalid_argument

[編集]

#include <bitset>
#include <string>
#include <iostream>
#include <climits>
 
int main() 
{
    // empty constructor
    std::bitset<8> b1; // [0,0,0,0,0,0,0,0]
 
    // unsigned long long constructor
    std::bitset<8> b2(42);          // [0,0,1,0,1,0,1,0]
    std::bitset<70> bl(ULLONG_MAX); // [0,0,0,0,0,0,1,1,1,...,1,1,1] in C++11
    std::bitset<8> bs(0xfff0);      // [1,1,1,1,0,0,0,0]
 
    // string constructor
    std::string bit_string = "110010";
    std::bitset<8> b3(bit_string);       // [0,0,1,1,0,0,1,0]
    std::bitset<8> b4(bit_string, 2);    // [0,0,0,0,0,0,1,0]
    std::bitset<8> b5(bit_string, 2, 3); // [0,0,0,0,0,0,0,1]
 
    // string constructor using custom zero/one digits
    std::string alpha_bit_string = "aBaaBBaB";
    std::bitset<8> b6(alpha_bit_string, 0, alpha_bit_string.size(),
                      'a', 'B');         // [0,1,0,0,1,1,0,1]
 
    // char* constructor using custom digits
    std::bitset<8> b7("XXXXYYYY", 8, 'X', 'Y'); // [0,0,0,0,1,1,1,1]
 
    std::cout << b1 << '\n' << b2 << '\n' << bl << '\n' << bs << '\n'
              << b3 << '\n' << b4 << '\n' << b5 << '\n' << b6 << '\n'
              << b7 << '\n';
}

出力例:

00000000
00101010
0000001111111111111111111111111111111111111111111111111111111111111111
11110000
00110010
00000010
00000001
01001101
00001111

[編集] 関連項目

ビットを true または指定された値に設定します
(パブリックメンバ関数) [edit]
ビットを false に設定します
(パブリックメンバ関数) [edit]