목록Categories (1099)
KoreanFoodie's Study
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 7 : 객체 생성 시 괄호'( )' 와 중괄호'{ }' 를 구분하라 핵심 : 1. 중괄호 초기화는 가장 광범위하게 적용할 수 있는 초기화 구문이며, 좁히기 변환을 방지하며, C++ 의 가장 성가신 구문 해석에서 자유롭다. 2. 생성자 오버로딩 해소 과정에서 중괄호 초기화는 가능한 한 std::initializer_list 매개변수가 있는 생성자와 부합한다. 3. 괄호와 중괄호의 선택이 의미 있는 차이를 만드는 예는 인수 두 개로 std::vector 을 생성하는 것이다. 4. 템플릿 안에서 객체를 생성할 때 괄호를 사용할 것인지 중괄호..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 6 : auto 가 원치 않은 형식으로 연역될 때는 명시적 형식의 초기치를 사용하라 핵심 : 1. "보이지 않는" 대리자 형식 때문에 auto 가 초기화 표현식의 형식을 "잘못" 연역할 수 있다. 2. 형식 명시 초기치 관용구는 auto 가 원하는 형식을 연역하도록 강제한다. 다음 예시를 보자. class Widget {}; std::vector feature(const Widget& w) { return std::vector(10); } void processWidget(Widget w, bool highPriority) { /* D..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 5 : 명시적 형식 선언보다는 auto 를 선호하라 핵심 : 1. auto 변수는 반드시 초기화 해야 하며, 이식성 또는 효율성 문제를 유발할 수 있는 형식 불일치가 발생하는 경우가 거의 없으며, 대체로 변수의 형식을 명시적으로 지정할 때보다 타자량도 더 적다. 2. auto 로 형식을 지정한 변수는 항목 2 와 항목 6 에서 설명한 문제점들을 겪을 수 있다. 아래 예시를 보면, auto 를 쓰는 것이 여러모로 훌륭하다는 것을 한눈에 파악할 수 있을 것이다. template void print_from_b_to_e(It b, It e)..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 4 : 연역된 형식을 파악하는 방법을 알아두라 핵심 : 1. 컴파일러가 연역하는 형식을 IDE 편집기나 컴파일러 오류 메시지, Boost TypeIndex 라이브러리를 이용해서 파악할 수 있는 경우가 많다. 2. 일부 도구의 결과는 유용하지도 않고 부정확할 수 있으므로, C++ 의 형식 연역 규칙들을 제대로 이해하는 것은 여전히 필요한 일이다. 형식 연역 정보를 얻는 방법은 세 가지 시점으로 분류할 수 있다. 1. IDE 편집기 2. 컴파일러의 진단 메시지 decltype 을 사용하면 다음과 같은 경우, 타입을 컴파일 타임에 알아낼 수..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 3 : decltype 의 작동 방식을 숙지하라 핵심 : 1. decltype 은 항상 변수나 표현식의 형식을 아무 수정 없이 보고한다. 2. decltype 은 형식이 T 이고 이름이 아닌 왼값 표현식에 대해서는 항상 T& 형식을 보고한다. 3. C++14 는 decltype(auto) 를 지원한다. decltype(auto)는 auto 처럼 초기치로부터 형식을 연역하지만, 그 형식 연역 과정에서 decltype 의 규칙들을 적용한다. 컨테이너의 operator[ ] 반환 형식을 손쉽게 표현해 보자. template auto auth..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 2 : auto 의 형식 연역 규칙을 숙지하라 핵심 : 1. auto 형식 연역은 대체로 템플릿 형식 연역과 같지만, auto 형식 연역은 중괄호 초기치가 std::initializer_list 를 나타낸다고 가정하는 반면, 템플릿 형식 연역은 그렇지 않다는 차이가 있다. 2. 함수의 반환 형식이나 람다 매개변수에 쓰인 auto 에 대해서는 auto 형식 연역이 아니라 템플릿 형식 연역이 적용된다. 한 가지 기이한 예외를 빼면, auto 형식 연역이 곧 템플릿 형식 연역이다. 그 기이한 한 가지 다른 예외를 보자. #include #i..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 1 : 템플릿 형식 연역 규칙을 숙지하라 핵심 : 1. 템플릿 형식 연역 도중 참조 형식의 인수들은 비참조로 취급된다. 즉, 참조성이 무시된다. 2. 보편 참조 매개변수에 대한 형식 연역 과정에서 왼값 인수들은 특별하게 취급된다. 3. 값 전달 방식의 매개변수에 대한 형식 연역 과정에서 const 또는 volatile(또는 그 둘 다인) 인수는 비 const, 비 volatile 인수로 취급된다. 4. 템플릿 형식 연역 과정에서 배열이나 함수 이름에 해당하는 인수는 포인터로 붕괴한다. 단, 그런 인수가 참조를 초기화하는데 쓰이는 경우,..
이득우님의 '이득우의 게임수학' 책을 보며 좋은 내용을 정리하고 있습니다. 더 자세한 내용이 궁금하시다면, 책을 구매해 직접 읽어보시기를 추천드립니다! 행렬을 이용한 회전변환 행렬을 이용해 어떤 물체를 반시계 방향으로 90 도 회전시키는 행렬을 구한다고 생각해 보자. 위의 그림을 보면, 두 벡터가 다음과 같이 변환된다. 표준기저벡터 e1 : (1, 0) -> (0, 1) 표준기저벡터 e2 : (0, 1) -> (-1, 0) 따라서 반시계로 90 도 회전 변환을 수행하는 행렬을 다음과 같이 설계할 수 있다. 시계방향으로 90 도 회전을 하는 경우는 다음과 같을 것이다 : 사실 90 도 회전의 경우는 행렬을 사용하지 않고 간단하게 다음과 같이 구할 수 있다. - 시계 방향으로 90 도 회전 : (x, y) ..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 55 : Boo子有親! 부스트를 늘 여러분 가까이에 핵심 : 1. 부스트는 C++ 표준화에 있어 영향력 있는 오픈 소스 C++ 라이브러리 개발 모임이다. 2. 부스트의 다양한 라이브러리를 살펴보자 부스트 라이브러리는 엄격한 심사를 통해 높은 품질의 코드를 제공한다. 예시는 정말 다양한데, 웹사이트를 들어가서 다양한 라이브러리를 구경해 보자!
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 54 : TR1 을 포함한 표준 라이브러리 구성요소와 편안한 친구가 되자 핵심 : 1. 최초에 상정된 C++ 표준 라이브러리의 주요 구성요소는 STL, iostream, 로케일 등이다. 2. TR1 이 도입되면서 추가된 것은 스마트 포인터, 일반화 함수, 해시 기반 컨테이너, 정규 표현식 등등이다 3. TR1 자체는 단순히 명세서이며, TR1 기능을 사용하기 위해서는 명세를 구현한 코드를 구해야 한다. 대표적인 자료처 중 한 군데가 바로 부스트이다. 사실 해당 책은 현재 시점(2022년) 으로부터 7년 전에 나온 개정판이므로, 책에서 ..