본문 바로가기

C++23

1. 구조체 바인딩 본 게시글은 제가 에이콘 출판사의 "C++17 STL 프로그래밍" 서적을 학습하며 정리한 게시글입니다. 구조체 바인딩 (Structured Binding) - C++17에서 추가된 문법 - 구조체나 pair, tuple로 묶은 요소들을 풀어서 각각의 변수에 할당할 수 있게 해주는 문법 #include #include #include #include using namespace std; // 배당금과 제수 파라미터를 받으며, 분수 뿐 아니라 나머지 값도 반환하는 수학 함수 pair divide_remainder(int devidend, int divisor) { return pair(devidend, divisor); } tuple stock_info(const string& name) { //... } .. 2023. 3. 1.
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.