Skip to content

GP101/2016

Repository files navigation

C++ Understanding

Basic C++ Video tutorial on youtube: https://www.youtube.com/playlist?list=PLrrTotxaO6kiFzuKfSHy3t-zOZNXSGGAE

Advanced C++ Video tutorial on youtube: https://www.youtube.com/playlist?list=PLrrTotxaO6khn83BjtBN-1HMDc9MZ__yt

C언어 복습: 구조체와 클래스(structure and class)

  • 개발 환경 준비하기
  • 구조체가 필요한 이유를 이해.
  • 기본적인 구조체 문법의 이해.
  • 구조체의 메모리 할당.
  • 구조체를 파라미터로 전달하는 방법.
  • 구조체의 복사 문제.
  • 구조체에 대한 포인터 사용이 필요한 이유.
  • 구조체를 위한 연산자 .과 ->화살표
  • 멤버 함수를 포함하는 구조체.
  • 구조체 자신을 가리키는 포인터 this.
  • 구조체와 클래스의 차이.

생성자와 소멸자(constructor and destructor)

  • 생성자와 소멸자의 기본 개념.
  • 오버로딩 및 explicity의 이해
  • 복사 생성자의 개념 이해.
  • 복사 생성자의 작성.
  • 생성자의 반환값 최적화의 이해.

참조(reference)

  • 참조에 대한 기본 이해.
  • 참조에 const를 사용하는 이유.
  • 주소연산자 &와 참조 연산자 &의 이해
  • 주소연산자 & 를 이용한 Swap()의 구현
  • 참조를 리턴하는 함수
  • 멤버 데이터의 참조 선언의 이해.

상속과 가상함수(Inheritance and virtual function)

  • 접근 변경자의 종류와 개념의 이해.
  • HAVE-A를 표현하는 세가지 방법의 이해.
  • 오버라이딩의 개념이해와 구현 방법.
  • 파괴자의 호출 순서의 이해와 주의할 점.
  • 가상함수의 기본적인 개념에 대한 이해.
  • 파괴자를 가상으로 선언해야 하는 이유.
  • 가상함수의 내부 동작에 대한 이해.
  • 컴파일러가 vtable을 관리하는 방법.

이름공간(namespace)

  • 이름공간의 이해와 사용 방법.

연산자 오버로딩(operator overloading)

  • 연산자 오보로딩의 개념 이해.
  • 연산자 오버로딩 함수를 작성하는 방법.
  • ostream에 사용된 연산자 오버로딩의 이해.
  • operator new에 대한 자세한 이해.
  • 동적 메모리 할당의 개념.

템플릿(template)

  • 오버로딩과 템플릿에 사용된 이름 장식.
  • 클래스 템플릿의 이해.
  • 템플릿 특화의 이해.
  • 부분 특화와 전체 특화.
  • 템플릿 메타프로그래밍의 이해.
  • 가변 템플릿 함수의 이해와 구현.
  • 가변 템플릿 클래스의 이해와 구현.
  • 형변환 연산자의 역할에 대한 이해.

형 변환 연산자(type casting operator)

  • static_cast와 dynamic_cast의 차이점 이해.

STL의 개념(STL concepts)

  • STL 라이브러리의 개념 이해.
  • 컨테이너와 아이터러터의 개념
  • STL 라이브러리의 간단한 구현.

decltype의 이해(understanding decltype)

  • decltype 전의 시도들.
  • typeof 매크로의 정의 구현."
  • 형을 대상으로 하는 연산을 해결하는 방법.
  • 템플릿 타입간의 연산에 대한 형 정의.
  • decltype에 꼬리 리턴 타입이 필요한 이유.

범위 지정 for문(range-based for-statement)

  • range-based for의 원리
  • C++11 표준에 추가된 range-based for
  • STL 표준 라이브러리에 사용된 base-from-member 관용구의 이해

STL 커스텀 할당(STL custom allocator)

  • 위치지정 new연산자의 이해
  • rebind의 원리
  • 커스텀 할당자의 제작1/2
  • 커스텀 할당자의 제작2/2

std::tuple이해하기(understanding std::tuple)

  • make_seq의 구현
  • tuple_helper의 구현
  • std::get의 구현

스마트 포인터(smart pointer)

  • std::shared_ptr의 사용법
  • 안전한 참조와 bool 표현식
  • safe-bool 관용구
  • copy-and-swap 관용구
  • swap()과 reset()의 구현
  • safe bool과 explicit
  • 순환 참조를 해결하는 방법
  • 클래스 내부에서 shared_ptr사용하기

완전한 전달(perfect forwarding)

  • l-value와 r-value의 이해
  • r-value 참조의 의미
  • 복사 생성자의 이해
  • operator=()과 복사문제
  • 이동 생성자move constructor
  • 완전한 전달
  • remove_reference의 원리
  • std::forward의 이해

람다(lambda)

  • 함수 포인터와 함수 객체
  • bind2nd()의 구현
  • std::bind와 람다
  • std::bind의 사용법
  • std::bind를 사용하여 멤버 함수 바인드하기
  • placeholder타입의 역할
  • 람다와 캡쳐 리스트
  • 쓰레드에서 람다의 사용

싱글턴(singleton)

  • 싱글턴 1/3
  • 싱글턴 2/3
  • 싱글턴 3/3

RAII

  • RAII의 의미, STRING_CAT의 구현
  • SCOPE_EXIT의 구현
  • PRE_BLOCK의 구현

FFT(Fast Fourier Transform)(빠른 푸리에 변환)

Video tutorial on youtube: https://www.youtube.com/playlist?list=PLrrTotxaO6kh0sXwkNHzybqTGw88KFrrr

FFT(Fast Fourier Transform)

  • Course Introduction(코스 소개)
  • Numerical Differentiation(수치 미분)
  • Euler Constant(오일러 상수)
  • Sigmoid Function(시그모이드 함수)
  • Taylor Series(테일러 시리즈)
  • Euler's Formula(오일러의 공식)
  • Euler's Formula and Quaternion(오일러의 공식과 사원수)
  • Fourier Transform Theory(푸리에 변환 이론)
  • Discrete Fourier Transform(이산 푸리에 변환)

Neural Network

(will be coverd on 2019)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors