std::bitset<N>::bitset
提供: cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| (1) | ||
bitset(); |
(C++11未満) | |
constexpr bitset() noexcept; |
(C++11以上) | |
| (2) | ||
bitset( unsigned long val ); |
(C++11未満) | |
constexpr bitset( unsigned long long val ) noexcept; |
(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 の対応するビット値に初期化して、ビットセットを構築します。 ただし M は unsigned 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 内のセットされていないビットのための代替文字
|
例外
4) いずれかの文字が one でも zero でもない場合は std::invalid_argument。
例
Run this code
#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 または指定された値に設定します (パブリックメンバ関数) | |
ビットを false に設定します (パブリックメンバ関数) |