반응형
이번 글을 통해 배워갈 내용
- 출석을 저장하는 법
월단위 출석을 저장하는 경우
int a[30];
배열로 저장을 하면 쉽습니다.
int가 16비트니까 총 16 * 30 비트의 데이터를 쓰겠군요
하지만 용량을 효율적으로 써야되는 경우
예를 들어 백만명의 출석을 저장 하는 경우 라면 어떨까요?
그럴때는 이러한 방법도 있을겁니다.
#include <iostream>
#include <math.h>
#include <bitset>
using namespace std;
int main()
{
uint schoolAttendance = 0u;
schoolAttendance |= (int)pow(2, 0);
cout<< (bitset<32>)(schoolAttendance) << endl;
schoolAttendance |= (int)pow(2, 1);
cout<< (bitset<32>)(schoolAttendance) << endl;
schoolAttendance |= (int)pow(2, 15);
cout<< (bitset<32>)(schoolAttendance) << endl;
return 0;
}
결과
00000000000000000000000000000001
00000000000000000000000000000011
00000000000000001000000000000011
uint 라는 32비트 양수 정수형 자료형에
자리수는 0이거나 1입니다.
따라서
각 자료에 0 과 1을 넣어줌으로서 32비트 안에 한 사람의 출석을 저장 할 수 있습니다.
아까 방법보다 16배 이상 메모리를 집약적으로 쓸 수 있습니다.
출석한 날에는 그에 해당하는 이진법 자리수에 0에서 1로 바꿔주고
출석을 체크 하는 날에는 해당하는 자리수만 확인해 주면 됩니다.~
참쉽죠~
이상입니다.
오늘도 즐거운 코딩하시길 바랍니다 ~ :)
참조 및 인용
https://en.cppreference.com/w/cpp/utility/bitset
C++ Primer
https://codemasterkimc.tistory.com/35
반응형
'C++ > C++ 기타' 카테고리의 다른 글
C++에서 new로 동적 메모리 할당 후 null값 체크를 해야 할까요? (1) | 2021.07.20 |
---|---|
C++ 열거형의 간단한 정의와 예시 (1) | 2021.07.15 |
C++ 맵에 대한 정의, 키로값찾기, 값으로키찾기, 시간복잡도 (1) | 2021.07.08 |
C++ 아스키 코드 영문 모음, 자음, 단어 갯수 세기 (1) | 2021.07.03 |
C++ 아스키 코드 스트링 문자 뒤집기 (1) | 2021.07.03 |