[42Seoul] - CPP Module07

Joey·2022년 11월 14일
0

42 SEOUL

목록 보기
14/20



1.무엇을 하는 과제인가?

: 템플릿을 공부하는 과제이다. 지금까지 우리는 클래스를 만들때 특정 형을 고정한 상태로 만들어주었다. 예를 들면 특정 변수가 int로 되어 있다면 그 클래스의 변수는 int밖에 되지 않았다. 하지만 이것은 너무도 불편한 일이다. 이제부터는 템플릿으로 자유자재로 해당되는 곳을 변경할 수가 있다.




2.과제를 하면서 참고 했던 곳들

1)템플릿 관련

: 모두의 코드 템플릿 관련 링크
링크 : https://modoocode.com/219





3.과제를 하면서 공부했던 것들

1)ex00

: 템플릿의 형태에 대해서 익히고 간단한 프로그램(swap, min, max)에 대해서 만드는 프로그램을 만든다.

Template의 기본 형태

template <typename T>

ex00의 swap의 코드 예)

template <typename T>
void swap(T& a, T& b)
{
	T temp;
	temp = a;
	a = b;
	b = temp;
}
  • 위에 typename이라고 써진 곳은 class로 이름을 대체 가능하다. c++을 처음 만들었던 Bjarne Stroustrup은 처음에 template의 인자로 class 키워드를 사용하였는데, 굳이 새로운 키워드를 만들고 싶지 않아서 였기 때문이라고 한다. 하지만 시간이 지나면서 혼동을 막기위해 typename을 사용하기로 하였다고 한다.(class로 되어 있으면 class를 넣어야 된다고 착각할 수도 있기 때문임, 이전 코드의 호환을 위해서 class도 사용은 가능함.)


2)ex01

: iterator(반복자)를 만드는 과제이다. 향후에 나오게 될 cpp08에서 iterator를 많이 써야 되는데 iterator가 반복자로서 모든 대상에 특정 함수를 적용시키는 역할도 하지만, 기본적인 기능(값 확인이나 이동 등)을 한다는 것을 알면 좋다. 향후에 cpp가 제공하는 standard library에 다양한 형태의 자료구조가 있는데 iterator는 이 자료형태가 다르더라도 편하게 값을 확인이나 이동할 수 있는 기능을 제공한다.(특정 자료형은 제공이 되지 않는 대상들도 있다.)

: 이곳에서는 단순하게 array를 돌면서 특정 함수를 적용시키는 간단한 iterator를 만들게 된다.



3)ex02

: Array를 template을 적용하여 만든다. 다른 것을 그렇게 힘든 점은 없지만 operator 연산자 []를 이용해서 값을 접근해야 되는 것을 주의해야 한다. 또한 복사 생성자나 복사 대입 연산자를 접근할 때에 array의 내부 하나하나를 돌면서 복사를 해줘야 한다.







4.회고

1)Template

: Template을 처음 접했을 때의 생각은 이 대상을 잘 쓰면 굉장히 편해지겠다는 생각이 컸다. 무수하게 함수를 생성하는 것보다, 나중에 재 사용이 가능하게 끔 잘 만들어 놓으면 좋겠다는 생각을 하였다. 또한 몇주가 되지 않았는데 벌써 형태가 기억이 나지 않아서 template 형태를 자주 사용해봐야 겠다는 생각을 하였다.

profile
세상을 이롭게 하는 프로그램 만들기

0개의 댓글