목록CS (12)
배움 저장소
스택 할 일을 쌓아둔다. LIFO(Last in First Out), 후입선출 용도 편집 소프트웨어의 Undo/Redo 기능 구현 연산자 우선순위를 고려한 수식의 계산 예) 1 + 2 * 3 에서 + 연산을 미뤄두고 *를 먼저 수행 함수 실행할 때 스택에 프레임 쌓기 - 앞에서 재귀호출 가시화 도구 가시화에서 봤듯이 나중에 호출된 함수를 끝낸 후 그 전에 호출된 함수로 돌아갈 수 있습니다. 구현 int Size() const { return top_ + 1; // top_이 index를 가리키므로 +1을 해주자 } // Insert item into the TOP of the stack void Push(const T& item) { if (capacity_ == top_+1) // capacity는 t..

문자열 ADT Data Type : 저장공간의 크기, 같은 Data Type의 연산을 정의한다. Abstract Data Type - 구현 하지 않은 Data Type. - 어떤 일을 해야하는 지 정의되어 있다. 예) class MyString { public: MyString(); // 비어 있는 MyString() 생성 MyString(const char* init); // 맨 뒤에 널 캐릭터'\0'가 들어 있는 문자열로부터 초기화 MyString(const MyString& str); // MyString의 다른 instance로부터 초기화 ~MyString(); bool IsEmpty(); bool IsEqual(const MyString& str); int Length(); void Resize..

재귀호출 재귀호출은 종료조건이 반드시 필요하다 가시화 도구 https://pythontutor.com/cpp.html#mode=edit - 가시화 도구에서는 함수 실행이 끝나면 stack 메모리 자체가 사라진다. 실제로는 우리가 프로그램을 실행시킬때 (OS가 프로세스를 만들어줄 때) 여유있는 크기의 stack 메모리를 미리 주고 편하게 사용하는 방식이다. - 함수 호출이 끝날 때 stack 메모리의 일부를 OS에게 반환하는 일은 없다(새 스택마다 메모리를 요청/반납하면 느려짐) - heap 메모리 공간은 매번 OS에게 요청하고 반납해야 합니다. 실행 위치에 따라 결과가 달라진다 void RecurFunc(int count) { if (count == 0) //