C++/[AssortRock] C++ 기초 다지기12 CPP_1. AssortRock 21일차 오프라인 수업_221005 20일차_221004 수업 내용은 그간 했던 연습문제들에 대한 반복숙달과 질문을 통한 문제풀이 시간이었으므로 별도로 적을 내용이 없음 (본 글에 적힌 내용과 다수 중복) 하지만 기존 내용들을 다시 되새기고 복습할 수 없는 유의미한 시간이었다 DFS와 스택 재귀함수 자체가 스택을 쓰고 있기 때문에 재귀함수를 쓰면 DFS를 쉽게 사용할 수 있었던 것 함수 호출과정 자체가 스택과 깊은 관련이 있음 (호출스택) 따라서 재귀를 스택으로도 풀 수 있음 개인적으로 시간을 내서 스택을 이용해 재귀 풀어보기 그래프 DFS에 대한 이야기 그래프는 트리와 달리 싸이클이 존재하므로, 왔던 곳은 다시 가지 않도록 구현해줘야 함(via 배열 사용) 연결되지 않은 정점을 통해 초보자사냥터 구현 (고레벨이 돼서는 연결을 끊어서 오지.. 2022. 10. 6. CPP_1. AssortRock 15일차 오프라인 수업_220927 std::pair 구현 pair는 map을 구성하는 요소 map과 pair는 항상 같이 쓰임 namespace ya { template class pair { public: public: T1 first; T2 second; }; } pair의 기본 모양 템플릿으로 타입 2개를 받아서 그 타입에 대응하는 값의 쌍으로 만들어짐 외부에서 first와 second에 접근할 수 있으므로 데이터를 public으로 뺌 pair() : first(T1()) , second(T2()) {} // 생성자 pair(const T1& f, const T2& s) : first(f) , second(s) {} // 이동 생성자 pair(T1&& f, T2&& s) : first(f) , second(s) {} 기본 생성자와 .. 2022. 9. 28. CPP_1. AssortRock 14일차 오프라인 수업_220926 양방향 링크드리스트 첫 날에 시험 봤던 게 링크드리스트여서 이제는 좀 친숙하게 느껴진다. 이번 구현은 header와 trailer를 사용한 구현 namespace ya { template struct Node { Node() : mData(NULL) , mNext(nullptr) , mPrev(nullptr) { } Node(const T data) : mData(data) , mNext(nullptr) , mPrev(nullptr) { } ~Node() { } T mData; Node* mNext; Node* mPrev; }; template class list { public: private: size_t mCount; Node* mfirst; Node* mlast; }; } Node* mfirst와.. 2022. 9. 27. CPP_1. AssortRock 13일차 오프라인 수업_220923 동적 배열 동적 배열의 작동 원리에 대해서는 stl vector를 참고하여 제작 vector의 최초 capacity는 클래스에서 static으로 선언하여 모든 인스턴스가 공유하도록 함 namespace ya { template class vector { public: private: static constexpr size_t DEFAULT_CAP = 32; T* mArr; size_t mSize; size_t mCapacity; }; } size는 실제로 벡터가 담고 있는 요소의 개수 capacity는 실제 할당된 메모리 동적 배열의 작동 원리는 size >= capacity일 때마다 capacity *= 1.5~2를 해서 옮겨 담는 것 실제 stl vector는 이 구현이 좀 더 복잡함 vector(s.. 2022. 9. 27. 이전 1 2 3 다음