C++ STL(표준 템플릿 라이브러리)의 bitset all() 함수는 내장(built-in) 함수로, 호출한 bitset 객체의 모든 비트가 1로 설정되어 있는지 검사합니다. 모든 비트가 1이면 true를 반환하고, 단 하나라도 0인 비트가 존재하면 false를 반환합니다.
이 함수는 어떠한 매개변수도 받지 않으며, 불리언(Boolean) 타입의 값을 반환한다는 점이 특징입니다.
문법(Syntax)
bool bitset_name.all();
사용 예시
Bitset = 100101
출력 결과
false
위 예시에서 비트셋에 0인 비트가 포함되어 있기 때문에 false가 반환됩니다. all() 함수가 true를 반환하려면 비트셋의 모든 비트가 반드시 1이어야 합니다.
예제 코드
#include <bits/stdc++.h>
using namespace std;
void printer(bool val){
if(val){
cout << "The bitset has all bits set" << endl;
} else {
cout << "The bitset does not have all bits set" << endl;
}
}
int main() {
bitset<4> bit1(string("1011"));
bitset<6> bit2(string("111111"));
cout << "The bitset is " << bit1 << endl;
printer(bit1.all());
cout << "The bitset is " << bit2 << endl;
printer(bit2.all());
return 0;
}실행 결과
The bitset is 1011 The bitset does not have all bits set The bitset is 111111 The bitset has all bits set
코드 설명
위 예제에서는 두 개의 bitset 객체를 생성하여 비교합니다. 첫 번째 bit1은 값이 1011로, 0인 비트가 하나 포함되어 있으므로 all() 함수가 false를 반환합니다. 반면 두 번째 bit2는 값이 111111로 모든 비트가 1이기 때문에 true가 반환됩니다.
all() 함수의 시간 복잡도는 비트셋의 크기 N에 대해 O(N)으로, 내부적으로 전체 비트를 순회하며 검사를 수행합니다. 참고로 이와 유사한 함수로 특정 위치의 비트를 확인하는 test()>, 하나라도 1이 있는지 확인하는 any()>, 1인 비트의 개수를 세는 count()> 등이 있으니 상황에 맞게 활용하면 좋습니다.