전체 글330 10. 템플릿 디자인 Thin Template 템플릿의 단점은 특정 타입에 대한 코드를 만들어냄으로써 발생하는 코드메모리의 증가임 이를 방지하기 위해 고안한 기술 T를 사용하지 않는 다른 인자들은 기반 클래스로 올리고 파생 클래스에서 T를 사용하는 함수들만 사용 // 기존 Vector template class Vector { T* buff; int sz; public: int size() const {} bool empty() const {} void push_front(const T& a) {} T& front() {} }; 이런 기존 모양의 Vector를 아래와 같이 변경 // 변경 후 Vector class VectorBase { protected: int sz; public: int size() const {} bo.. 2022. 10. 9. 9. 가변인자 템플릿-2 std::tuple 구현 tuple은 n개의 객체를 보관할 수 있는 템플릿 구조체 때문에 가변인자 템플릿으로 만들어졌다. #include template struct xtuple { static constexpr int N = 0; }; template struct xtuple : public xtuple { T value; xtuple() = default; xtuple(const T& v, const Types& ... args) : value(v), xtuple(args...) {} static constexpr int N = xtuple::N + 1; }; int main() { xtuple t3; } typename T, typename ... Types를 통해 맨 앞의 타입을 저장할 수 있음 .. 2022. 10. 7. CPP_1. AssortRock 21일차 오프라인 수업_221005 20일차_221004 수업 내용은 그간 했던 연습문제들에 대한 반복숙달과 질문을 통한 문제풀이 시간이었으므로 별도로 적을 내용이 없음 (본 글에 적힌 내용과 다수 중복) 하지만 기존 내용들을 다시 되새기고 복습할 수 없는 유의미한 시간이었다 DFS와 스택 재귀함수 자체가 스택을 쓰고 있기 때문에 재귀함수를 쓰면 DFS를 쉽게 사용할 수 있었던 것 함수 호출과정 자체가 스택과 깊은 관련이 있음 (호출스택) 따라서 재귀를 스택으로도 풀 수 있음 개인적으로 시간을 내서 스택을 이용해 재귀 풀어보기 그래프 DFS에 대한 이야기 그래프는 트리와 달리 싸이클이 존재하므로, 왔던 곳은 다시 가지 않도록 구현해줘야 함(via 배열 사용) 연결되지 않은 정점을 통해 초보자사냥터 구현 (고레벨이 돼서는 연결을 끊어서 오지.. 2022. 10. 6. 8. 가변인자 템플릿 가변인자 템플릿 n개의 인자를 받는 템플릿 0개일 수도 있고, 여러 개일 수도 있음 인자와 타입의 개수가 정해지지 않은 형태의 템플릿 tuple의 경우 가변인자 클래스 템플릿으로 되어 있음 인자를 0개를 줘도, 1개를 줘도, n개를 줘도 에러가 발생하지 않는다. // 가변인자 클래스템플릿 template class xtuple { }; // 가변인자 함수템플릿 template void foo(Types ... args) { } 타입의 경우 1개가 아니므로 관례상 Types로 통일 받는 인자쪽도 arg가 아닌 복수형 args로 통일 Parameter Pack C++11부터 지원 가변인자를 받는 함수의 경우 Parameter Pack을 통해 args를 사용할 수 있다. 인자가 몇 개 있는지 알고 싶으면 si.. 2022. 10. 6. 이전 1 ··· 60 61 62 63 64 65 66 ··· 83 다음