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) |
여러 선택적 데이터 소스 중 하나에서 새로운 비트셋을 생성합니다:
- 첫 번째(오른쪽, 최하위) std:: min ( S, N ) 비트 위치는 val 의 해당 비트 값으로 초기화됩니다.
- 만약 S 가 N 보다 작다면, 나머지 비트 위치는 0으로 초기화됩니다.
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 에서 설정된 비트를 위한 대체 문자 |
예외
참고 사항
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__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); // [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] // 문자열 생성자 (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)
의 0과 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
또는 지정된 값으로 설정
(public member function) |
|
|
비트를
false
로 설정
(public member function) |