Study: Software(SW)

    [C++] 알고리즘 (#include <algorithm>): 있는 거 가져다 쓰자.

    #include 컨테이너에 반복자들을 가지고 이런 저런 작업을 쉽게 수행할 수 있도록 도와주는 라이브러리. 보통 다음의 두 형태를 가집니다. 반복자의 시작점과 끝점 바로 뒤를 받는 경우 반복자의 시작점과 끝점 바로 뒤 + 서술자(Predicate): 특정한 조건을 서술 template void do_something(Iter begin, Iter end); template void do_something(Iter begin, Iter end, Pred pred) 정렬 (sort, stable_sort, partial_sort) sort : 일반적인 정렬 함수이며, hybrid of QuickSort를 이용하여 구현되었습니다. std::sort(vec.begin(), vec.end(), greater())..

    [C++] 템플릿 메타 프로그래밍 (Template Meta-programming)

    template meta-programming: 템플릿을 사용하는 프로그래밍 기법으로, 컴파일러에게 프로그램 코드를 생성하도록 하는 방식이다. 이러한 기법은 컴파일 시점에 많은 것을 결정하도록 하여, 실행 시점의 계산을 줄여준다. 이 기법은 C++ 프로그래밍 언어에서 주로 사용한다. 참고 템플릿 메타 프로그래밍 1: https://modoocode.com/221 템플릿 메타 프로그래밍 2: https://modoocode.com/222

    [C++] 템플릿 (Template) (feat. Template Meta-programming)

    템플릿 (template) #include template void print(T arg) { std::cout

    [C++] 객체지향 프로그래밍: 추상화, 캡슐화, 상속성, 다형성, 동적바인딩...

    절차 지향 VS 객체 지향 절차 지향 절차 지향 모델링은 프로그램을 기능중심으로 바라보는 방식으로 "무엇을 어떤 절차로 할 것인가?"가 핵심이 된다. 즉, 어떤 기능을 어떤 순서로 처리하는가에 초점을 맞춘다. 객체 지향 객체 지향 모델링은 기능이 아닌 객체가 중심이 되며 "누가 어떤 일을 할 것인가?"가 핵심이 된다. 즉, 객체를 도출하고 각각의 역할을 정의해 나가는 것에 초점을 맞춘다. 절차 지향 VS 객체 지향 대형 프로그래밍의 경우, 많은 기능을 수반하기 때문에 절차 지향보다는 객체 지향이 적합 소형 프로그래밍의 경우, 작은 기능을 수반하기 때문에 객체 지향보다는 절차 지향이 적합 주의!: C++이 객체 지향 언어라고 해서 OOP가 목적이 되면 안된다. C++를 쓰기 위해 읽기 편하고, 이해하기 편..