* 블로그에 작성된 따라배우는 C++ 관련 모든 코드와 사진들의 저작권은 강의의 저자이신 홍정모 교수님께 있습니다.
인프런 사이트(www.inflearn.com)의 '홍정모의 따라하며 배우는 C++' 유료강좌를 실제로 구매하였고
강의를 수강하며 제 스스로 복습 및 내용 정리를 위해
강의에 나오는 코드들을 따라친 코드와 교수님의 말씀, 그리고 강의에 나오는 사진들을
활용하였음을 미리 알립니다.
마지막으로, 좋은 강의를 제작해주신 홍정모 교수님께 감사드립니다.
______________________________________________________________________________________________
vector을 우린 전에 std::array와 함께 배웠다.
vector는 동적할당을 할 때 주로 활용한다 배웠다.
vector의 경우 size, capacity라는 두 개념을 활용한다.
vector을 resize한 경우 size와 capacity가 둘 다 바뀌었고, 또한 나머지 값들은 0으로 초기화되었다.
여기까진 size와 capacity의 차이점을 잘 모르겠다.
그럼 반대로 resize로 vector 선언의 원 길이보다 줄여보았다.
놀랍게도, size는 2로 바뀌지만, capacity는 3으로 유지가 되었다.
핵심은, 우리가 new, delete로 메모리를 할당받고 반납하는 것은 시간이 오래걸리니,
벡터는 할당받고 나서 메모리를 반납하고 사이즈를 조정하는 것이 아니라 그냥 나머지를 숨긴다.
그래서 사이즈는 줄어졌지만, capacity는 그대로 있는 것이다.
만약 capacity를 수정하면?
size는 그대로지만, capacity 자체만 커졌다.
vector의 경우 이렇게 stack이라는 형태의 자료구조로도 활용될 수 있다.
vector의 메소드 중 push_back(밀어 넣기), pop_back(빼기) 이렇게 두가지가 있다.
말 그대로 무한초밥집에서 초밥접시 먹고 쌓는다 생각하면된다.
우리가 먹을땐 아래에서 위로 쌓이고
계산을 할 땐 위에서 아래로 빼면서 계산하는 것 생각하면 된다.
이번엔 재귀함수다.
재귀함수를 처음 공부했을 때 난처했던 기억이 있다.
아니 똑같은 함수인데 어쩌라고? 이런느낌.
쉽게 생각하면 저 위에 countDown(count-1)을 다시 저 함수의 코드들로 치환해서 생각하면 간단하다.
너무 어렵게 생각말자. 이것도 결국 stack처럼 쌓이는 느낌.
이건 내가 스스로 피보나치 수열 함수를 구현해본 코드이다.
내가 성장했다 느낀 부분이 어디었냐면, 단순히 main함수에서 반복문으로 fibonacci함수를 출력할 수도 있지만,
피보나치 함수를 포인터로 인자를 주면서 피보나치를 출력하는 함수를 또 구현해본 것이다.
스스로 함수 포인터가 필요하다 인식해 포인터로 구현해본 것이 내가 한 번 성장했구나 느껴본 지점이라 생각한다.
'C++(따라하며 배우는 C++)' 카테고리의 다른 글
Chapter 8-(1). 객체지향의 기초 (0) | 2021.09.13 |
---|---|
Chapter 7-(4). 함수 (0) | 2021.09.07 |
chapter 7-(2) . 함수 (0) | 2021.09.04 |
Chapter 7-(1). 함수 (0) | 2021.09.02 |
chapter 6-(2). 행렬, 문자열, 포인터, 참조 (0) | 2021.08.31 |