[C++] assigment1, 2 과제 문법 총정리
1. 결과
위와 같이, 정상 작동하는 결과를 얻을 수 있었다. 문제를 이해하기까지 많은 시간이 걸렸지만 차근히 문법들을 찾아가며 코드를 작성하였다. 코드를 작성해가며 얻은 문법적인 부분을 보고서에 정리하려고 한다.
2. 배운 점들
1. Map
선언 형태는 map<key, value>로 key와 value를 pair 형태로 선언한다.
그 외 iterator를 사용하면 간단하게 값에 접근할 수 있다는 사실을 알았다. begin()은 시작하는 iterator를 반환하고, end()는 반대로 end iterator를 반환한다.
그 이외에 또 다른 earse(key)를 이용해 맵에서 key값에 해당하는 원소 삭제를 하는 것이므로, key 값을 삭제할 때 쓰였다. 그 외 empty(), size(), find(), count()등 여러 가지 기능이 있다.
2. Vector
Vector 컨테이너는 자동으로 메모리가 할당되는 배열이라고 생각하였다. 그래서 마음대로 다양한 데이터 타입을 넣을 수 있다. <vector> 헤더 파일을 추가해야하며, using namespace std;를 해주면 편리하게 사용할 수 있다. 선언 형식은 vector <data type> 변수 이름 형식으로 선언한다. 여기서 헷갈리는 부분은 vector<int> v(5)는 5를 원소로 가지는 것이 아니라, 기본값 0으로 초기화 된 5개의 원소를 가지는 vector를 선언한다는 것이었다. 이외에도 두 개의 인자를 받아서 생성하는 초기화 값을 정해준 vector 생성하기, v2에 v1 복사하기 등 다양한 기능이 있다는 것을 알게 되었다.
3. Dynamic_cast
Dynamic_cast는 safe_dowancasting(안전한 다운 캐스팅)에 사용된다고 한다. 간단히 말하면 부모 클래스의 포인터에 자식 클래스의 포인터로 다운 캐스팅을 해주는 연산자이다. 이번 과제에서는 각각의 연산 메소드에 들어오는 연산자가 Number 타입이므로, 각각 다른 타입들의 메소들을 사용하려면, 그 타입으로의 캐스팅이 필요하다. 그래서 다이나믹 캐스팅을 사용하는 것이다.
4. Pair
두 객제들을 하나의 객체로 취급할 수 있게 묶어주는 클래스이다.
STT에서 데이터 쌍을 표현할 때 사용하며, <utililty> 헤더에 존재한다. 선언 형태는 pair<type1, type2> p로, 사용할 데이터 타입 1, 2를 넣고 그 타입의 pair 클래스인 p를 만들게 된다.
과제에서 사용했듯이 이 값들은 get<0>과 get<1>의 방법으로도 가져올 수 있지만 p.first로도 p의 첫 번째 인자를 반환해 주고, p.second 두 번째 인자를 반환해준다. 이것을 만들 수 있는 방법으로는 make_pair가 있는데, 과제에서는 이것을 사용하여 real과 imag에 대한 pair를 만들어 사용하였다.
5. enum
프로그래머들이 자신만의 자료형을 만들 수 있게 해주는 기능을 포함하고 있는 것이 바로 이 enum 열거형 유형이다. 이것은 가능한 모든 값이 기호 상수(열거형)로 정의되어있는 자료형이며, 말 그대로 enum 키워드를 통해 정의되게 된다.
열거형을 정의해도, 메모리는 할당되지 않는다. 열거된 유형의 변수가 정의된 경우, 해당 변수에 대해 메모리가 할당된다. 각 열거자는 쉼표로 구분되고, 전체 열거는 세미클론으로 끝난다.
보통 enum 식별자는 대문자로 시작하는 경우가 많으며, 열거자는 종종 모두 대문자로 이름이 지어진다. 열거자는 열거와 같은 네임 스페이스에 배치되기 때문에, 열거자 이름은 네임 스페이스 내의 여러 열거에서 사용할 수 없다. 과제 assignment2에서는 Number 클래스 안에 타입들 INTERGER, FLOAT, COMPLEX에 사용된 모습을 볼 수 있었다.
'Undergraduate Records' 카테고리의 다른 글
[1회차 계획] Java가 왜 C에 비해서 느린걸까 (0) | 2020.01.02 |
---|---|
[모각코 계획] 동계 모각코 신청 및 목표 계획 (0) | 2019.12.23 |
[C++] pair와 다이나믹 캐스팅 (0) | 2019.11.19 |
[1108] Drag and Drop, localStorage 문제 해결 (0) | 2019.11.08 |
[1108] 웹프로그래밍 중간고사 리뷰 (0) | 2019.11.08 |