묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨홍정모의 따라하며 배우는 C++
클래스 템플릿 특수화에서 boolalpha로 표현된 리턴값에 대해 질문이 있습니다.
#pragma once #include <bitset> template <class T> class Storage8 { private: T array_[8]; public: void set(const int& index, const T& value) { array_[index] = value; } const T& get(int index) const { return array_[index]; } }; template<> class Storage8<bool> { private: unsigned char data_; public: Storage8() :data_(0){} void set(int index, bool value) { unsigned char mask = 1 << index; // left shift std::cout <<"index bit : " << std::bitset<8>(mask) << std::endl; if (value) data_ |= mask; // flag on else data_ &= ~mask; // flag off std::cout << "After masking value : " << std::bitset<8>(data_) << std::endl; } bool get(int index) { unsigned char mask = 1 << index; return(data_ & mask) != 0; // Has data_? } };main.cpp#include <iostream> #include <array> #include "Storage8.h" using namespace std; int main() { // Define a Storage8 for integers Storage8<int> intStorage; for (int count = 0; count < 8; count++) intStorage.set(count, count); for (int count = 0; count < 8; count++) cout << intStorage.get(count) << endl; cout << "Sizeof Storage8<int> " << sizeof(Storage8<int>) << endl; // Define a Storage8 for bool Storage8<bool> boolStorage; for (int count = 0; count < 8; count++) boolStorage.set(count, count & 3); // 늘어나는 count와 3을 bitmasking for (int count = 0; count < 8; count++) cout << std::boolalpha<< boolStorage.get(count) << endl; cout << "Sizeof Storage8<bool> " << sizeof(Storage8<bool>) << endl; return 0; }이런 결과가 나왔는데요, 원문 learncpp에서는 boolStorage.set(count, count & 3); 처럼 value값에 늘어나는 count와 숫자 3을 넣었습니다. 그런데 이 원리가 어떻게 되는지 잘 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-L 14889번 - 스타트와 링크 시간복잡도 계산을 어떻게 해야 할지 모르겠습니다.
안녕하세요 선생님. 문제를 풀다 이런 비트마스킹을 이용한 조합 문제에서 1억이 넘는지 확인을 어떻게 해야 할지 궁금해서 질문 남깁니다.제 생각으로는 비트를 20개를 사용하니 2^20 - 1 만큼 연산을 하지만 비트가 N /2 만큼 켜진 것이 아니면 다음 연산으로 넘어가니 20C10 으로 보는것이 맞는건가? 라고 추측을 하는데 혹시 이게 맞을까요?만약 이게 맞다면 20!이나 되는 큰 숫자를 시험도중에 대략적인 계산을 해보기에는 너무 크다는 생각이 드는데 TLE가 날지 어떻게 계산을 해봐야 할지 막막한데 방법이 있을까요?