std::bitset<N>:: bitset
|
bitset
(
)
;
|
(1) |
(C++11以降 noexcept)
(C++11以降 constexpr) |
| (2) | ||
|
bitset
(
unsigned
long
val
)
;
|
(C++11まで) | |
|
constexpr
bitset
(
unsigned
long
long
val
)
noexcept
;
|
(C++11から) | |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
explicit
bitset
|
(3) | (C++23以降 constexpr) |
|
template
<
class
CharT,
class
Traits
>
constexpr
explicit
bitset
|
(4) | (C++26以降) |
|
template
<
class
CharT
>
explicit
bitset
(
const
CharT
*
str,
std::
size_t
n
=
std::
size_t
(
-
1
)
,
|
(5) |
(C++11以降)
(C++23以降 constexpr) |
いくつかのオプションデータソースの1つから新しいbitsetを構築します:
- 最初の(右端、最下位) std:: min ( S, N ) ビット位置は val の対応するビット値で初期化される。
- S が N より小さい場合、残りのビット位置はゼロで初期化される。
Traits::eq()
は文字値を比較するために使用されます。
|
bitset
(
n
==
std::
basic_string
<
CharT
>
::
npos
|
(C++26まで) |
|
bitset
(
n
==
std::
basic_string_view
<
CharT
>
::
npos
|
(C++26以降) |
目次 |
、
、
パラメータ
| val | - | ビットセットの初期化に使用される数値 |
| str | - | ビットセットの初期化に使用される文字列 |
| pos | - | str 内の開始オフセット |
| n | - | str から使用する文字数 |
| zero | - | str 内の未設定ビットの代替文字 |
| one | - | str 内の設定ビットの代替文字 |
例外
タグ内のC++コードは完全に保持
- C++固有の用語(std::out_of_range, std::invalid_argument, pos, str.size(), one, zero)は翻訳せず保持
- 技術文書としての正確性と専門性を維持
- 自然な日本語の技術文書として読みやすいように文脈を補完(「がスローされる条件」を追加)
注記
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_constexpr_bitset
|
202207L
|
(C++23) |
よりconstexprな
std::bitset
、オーバーロード
(
3,5
)
|
__cpp_lib_bitset
|
202306L
|
(C++26) |
std::bitset
と
std::string_view
の連携
(
4
)
|
例
#include <bitset> #include <climits> #include <iostream> #include <string> int main() { // 空コンストラクタ (1) std::bitset<8> b1; // [0,0,0,0,0,0,0,0] // unsigned long long コンストラクタ (2) std::bitset<8> b2(42); // [0,0,1,0,1,0,1,0] std::bitset<70> bl(ULLONG_MAX); // C++11では [0,0,0,0,0,0,1,1,1,...,1,1,1] std::bitset<8> bs(0xfff0); // [1,1,1,1,0,0,0,0] // 文字列コンストラクタ (3) 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] // カスタム0/1文字を使用する文字列コンストラクタ (3) 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*コンストラクタ (5) std::bitset<8> b7("XXXXYYYY", 8, 'X', 'Y'); // [0,0,0,0,1,1,1,1] std::cout << "b1: " << b1 << "\nb2: " << b2 << "\nbl: " << bl << "\nbs: " << bs << "\nb3: " << b3 << "\nb4: " << b4 << "\nb5: " << b5 << "\nb6: " << b6 << "\nb7: " << b7 << '\n'; }
出力例:
b1: 00000000 b2: 00101010 bl: 0000001111111111111111111111111111111111111111111111111111111111111111 bs: 11110000 b3: 00110010 b4: 00000010 b5: 00000001 b6: 01001101 b7: 00001111
欠陥報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 修正後の動作 |
|---|---|---|---|
| LWG 396 | C++98 |
オーバーロード
(3)
のゼロおよび1の文字の値が 0 および 1 であった (これは '0' および '1' に対応しない) |
これらの文字の値を
提供するパラメータを追加 |
| LWG 457 | C++98 |
オーバーロード
(2)
において
S
は
CHAR_BIT
*
sizeof
(
unsigned
long
)
であったが、 unsigned long は値の表現に すべてのビットを使用することが保証されていない |
値表現のビット数を
考慮するように変更 |
| LWG 2250 | C++98 | pos > str. size ( ) が true の場合、動作は未定義であった |
この場合には常に
例外をスローする |
関連項目
|
ビットを
true
または指定された値に設定
(公開メンバ関数) |
|
|
ビットを
false
に設定
(公開メンバ関数) |