Study

    class template deduction guide

    class template 을 이용하여 생성자를 만들때 가이드를 주어 어떤 생성자를 사용할지 알게 하는 문법이다. 생성자를 '추론' 할 수 있게 도와준다고 하여 deduction guide 라고 하는 것 같다. 아래 코드를 참고해보자. #include #include using namespace std; template class MyDB { public: MyDB() = default; template MyDB(const Container& c) { // some implementation here } private: }; int main() { vector v = {1,2,3,4}; MyDB my(v); return 0; } MyDB class 의 의도는 생성할때 임의의 Container 를 담아 거..

    protected destructor

    delete 를 외부에서 호출할 수 없게 하는 기술 객체를 힙영역에만 생성하게 하는 기술이다. 객체의 소멸자를 protected 영역에 둠으로써, 위 2가지를 가능하게 만든다. 코드를 통해서 살펴보자. #include #include class Book { public: Book() = default; ~Book() = default; void DeleteBook() { delete this; } private: int page {0}; }; int main() { Book *myBook= new Book; Book *myBook2 = new Book; Book book ; // not want to allow declaration of local variables delete myBook2;// not..

    Enum class to type ( int2Type 의 응용)

    개요 integral_constant 는 int2type 이라는 C++ 11 부터 자주 쓰는 테크닉이 C++17 부터 정식 반영된 케이스라고 한다. 페이스북의 모든 소프트웨어 구조를 설계했다고 알려진 개발자가 이전에 integer 를 타입화 시켜 사용하던 테크닉이 정식에 반영된 케이스라고 한다. 나는 이것을 살짝 응용해서, enum class 를 타입화 시키는 방법에 대해서 소개 하려고 한다. enum class enum class는 modern c++ ( c++11 ~ ) 에서 부터 적용된 개념으로 아래와 같이 두가지 특징을 가지고 있다. enum 에 별도의 scope 를 소유할 수 있게 한다. (아래 코드 참조) #include enum class TrafficLight { Red, Blue, Gre..

    Window batch script 콘솔 텍스트에 색깔 넣기

    개요 리눅스 환경에서 셸 스크립트가 있듯이 윈도우에는 배치 스크립트가 있다. 확장자 .bat 으로 있는 파일인데 종종 봤을 수도 있다. 예컨대 현재 폴더의 파일들을 출력한다든지, 그 파일을 실행한다든지 하는 식의 스크립트 제작시 요긴하게 쓰인다. 시스템 부팅할때 여러종류의 배치파일이 실행하는 등 윈도우판 셸 스크립트이다. 윈도우 환경에서 개발하다보면 batch 파일을 만들일이 꽤 있는데 이를 더 예쁘게 하기 위해 출력창에 컬러를 넣어 보았다. 윈도우 7 이후부터는 파워쉘을 통해 색깔 텍스트를 지원한다 그런데 이게 특정 컴퓨터에서는 무지 느린 이슈가 있었다... 분명히 원래 윈도우 콘솔에서도 컬러를 넣는 방법이 분명히 있었을텐데.. 하는 생각이 들었고 이에 알아보니 방법이 있었다. 이 글은 두가지 방식으로..

    Fixed Size Queue ( Circular Queue Buffer )

    Fixed Size Queue ( Circular Queue Buffer )

    개요 개발을 진행하면서 큐 자료구조를 써야하는 경우는 종종 발생한다. 아래 그림 처럼 동작하는 자료구조가 바로 큐이다. 대부분의 언어에서 큐 자료구조 정도는 지원 하지만 내가 개발하는 환경이 메모리에 민감하거나 매프레임 동적할당을 할 수 있는 환경이 아닌 경우 제공하는 자료구조를 쓰지 못할 수 도 있다. std::queue 의 경우 동적할당이 매번 발생하니까.. 또한 기존의 동작과는 다른 요구사항이 있었다. "새로운 원소가 들어오면 기존 큐에 가장 오래 남아있던 원소는 삭제하고, 새로운 원소를 큐에 집어넣어주세요" 라는 요구사항이다. 정리하면 아래의 세가지 요구사항을 만족하는 새로운 자료구조가 필요하였다. 큐는 고정된 사이즈여야한다. ( 메모리 한계 ) 새로운 원소가 들어오면 기존에 가장 오래된 원소는 ..

    CircularQueue Buffer

    CircularQueue Buffer - 고정된 사이즈의 큐 Concept CircularQueue Buffer is fixed size Queue which seems like FIFO queue. The difference between FIFO queue and CircularQueue Buffer is that unlike FIFO queue, CircularQueue Buffer shifts data when CircularQueue Buffer's size is maximum. CircularQueue Buffer is developed by using this concept via circular queue concept. Wiki : Circular Queue Three types of C..

    EnumClassToType

    Introduction Enum class and int2Type are powerful grammar that modern c++ provides. This post proposes EnumClass2Type which is developed by using enum class and int2Type. As can be inferred by title , This post deals with how to convert enum class to type. enum class The enum class is a powerful new concept in modern c++. The two main features are as follows. We can use same name since each name..