2023.09.19 데브코스 2일차
2일차밖에 안됐는데 벌써 몇주가 지난 기분이다.
그날 공부할 것을 미루지말자!를 새기며 2일차 TIL을 작성해본다.
c++ 기초, STL, 리눅스 설치에 대해 배웠다. STL 과제도 수행했다.
오늘도 여전히 이해하는데 오래걸리고 공부를 많이 해야겠다는 생각이 들었다.
📕 C++
프로세스 메모리 구조
- 가상 메모리가 어떻게 구성되어 있는지
- 코드를 작성할 때 메모리 문제가 발생되지 않도록, 메모리를 최소화할 수 있도록 한번 더 생각해야겠다.
스마트 포인터
- 포인터는 C언어일 때도 날 괴롭히더니 C++에서도 날 힘들게 한다...
- unique_ptr(독점), shared_ptr(비독점), weak_ptr
- 스마트 포인터와 raw 포인터를 혼합하여 사용하지 않기!
- 스마트 포인터... 잘 활용하면 매우 유용할 것 같으나 아직 사용하는 것이 익숙하지 않다.
- 조금 더 공부가 필요한 부분인 것 같다...
📌 STL
- c++은 코테를 준비하면서 간단히 공부했었는데 지금보니 코테 어떻게 봤는지 신기할 따름이다
순차 컨테이너
- vector, list, deque
- 구현할 때 메모리를 한번씩 생각하면서 구현해야겠다!
알고리즘
sort()
merge()
nth_element()
- 전체를 정렬하지 않고 정렬 후 몇번째를 가져오는 함수(빠르게 값 얻을 수 있음)
- 이거 'k번째 수'문제에 적용했으면 좋았겠다라는 생각이 이제 든다. 이게 바로 복습의 중요성인가
💻 리눅스 설치
- 리눅스...나에겐 아직 생소한 것
- 듀얼부팅으로 리눅스를 설치해놨지만 아직 사용법을 잘 몰라서 VMware로 윈도우에 설치했다
- 예전에 Virtual Box로 설치했다가 실패했던 기억이 떠올랐다. 왜 계속 오류가 났는지 아직도 모른다....하하
- VMware로는 리눅스 설치를 완료했다!!
- 설치 과정을 velog에 바로바로 작성한 것도 매우 뿌듯하다.
- 주말과 같이 시간이 있을 때 가상버전이 아닌 원래 버전에서 사용하는 것도 연습할거다!
📚 과제
- 오늘부터 STL 과제가 시작되었다.
- 팀원들끼리 코드 리뷰를 진행하는데 역시 사람마다 코드를 다르게 짠다는 것을 실감했다. 아직 c++을 제대로 모르기 때문에 코드 리뷰를 하면서 여러 문법들을 공부할 수 있었다.
- 과제들은 따로 시간이 된다면 velog에 작성할 생각이다.
회전하는 큐
- 오랜만에 c++ 코딩을 하는거라 멍하게 시작했다.
cin
으로 값을 입력받는 것도 생각이 안 났었다.
- 큐를 그려가며 천천히 생각하면서 문제를 풀었다. 풀고나니 어려운 건 아니었지만 역시 생각하는게 쉽지 않다.
push_back
, pop_front
는 완벽 숙지한 것 같다
k번째 수
vector<int> tmp(array.begin(), array.end());
- 이렇게 하면 vector를 선언하면서 array을 가져올 수 있다!
- sort를 한 후 k번째 값을 찾는 것보다
nth_elements
를 사용하면 더 효율적으로 찾을 수 있다.
👩💻 개인 공부
내가 추가로 공부한 C++(복사 생성자)
- 어제 배운 부분 중 값 참조가 너무 어려워서 '이것이 C++이다'로 추가 공부중이다.
- '디폴트 복사 생성자'는 shallow copy를 하기 때문에 포인터가 사용되는 경우에는 '복사 생성자 정의'를 통해 deep copy를 해야한다!!