목록전체 글 (103)
배움 저장소
스택 할 일을 쌓아둔다. 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) //

std::swap 선택정렬 전체 배열에서 가장 작은 값을 찾는다. 나머지 값에서 두 번째로 작은 값을 찾는다. ... 함수의 매개변수를 포인터로 정의하고 인수가 배열일 때 배열의 범위 밖 데이터를 불러올 수 있다. void OutOfRange(int* arr, int size) { cout
템플릿 멤버 변수의 자료형만 다를 뿐 같은 구현이 동일한 클래스가 있다면 여러 번 정의하기 번거롭다. 이때 템플릿이 유용하다. template class MyClass { public: T data_; }; int main() { MyClass my_int; MyClass my_double; my_int.data_; my_double.data_; cout
구조체 구조체와 배열의 차이 구조체는 여러 자료형을 묶어놓을 수 있다. MyStruct a{ int first; float second; }; 구조체의 패딩(padding) MyStruct2 구조체 멤버변수의 총 크기는 5byte이지만 구조체 전체의 크기는 8byte이다. 컴파일러가 패딩을 추가하였다. struct MyStruct { int first; // 4 bytes int second; //4 bytes }; struct MyStruct2 { int fist; // 4 bytes char second; // 1 bytes }; int main() { cout

포인터 ampersand & int a = 1; cout