본문 바로가기

C++23

3. 배열과 템플릿 본 글은 코드누리의 Template Programming 강좌를 개인 학습 목적으로 정리한 글 입니다. https://www.ecourse.co.kr/course-status/ 배열의 이름 배열의 이름을 배열의 주소로 알고 있는데 사실은 그게 아님 int x[3] = {1, 2, 3}; 변수의 이름은 x, 변수 타입은 int[3] 변수의 이름만 빼면 변수의 타입이기 때문 배열 x의 주소를 구하는 방법 ? p3 = &x; // ? 자리에 타입이 들어가야 하는데 어떤 타입이 맞을까? int *p3[3] = &x; // 이렇게 하면 주소를 담는 포인터가 되지만 배열 연산자([])의 우선순위가 빨라서 p3[3]이 먼저 계산됨 따라서 int (*p3)[3] = &x 와 같이 담아야 함 #include #inclu.. 2022. 9. 26.
2. Template Type Deduction 본 글은 코드누리의 Template Programming 강좌를 개인 학습 목적으로 정리한 글 입니다. https://www.ecourse.co.kr/course-status/ 템플릿 타입 추론 방식 template void foo(const T a) { } 여기서 T와 a의 타입이 서로 다를 수 있다. int가 넘어오면 T는 int가 되고, a는 const int가 된다. #include #include using namespace std; using namespace boost::typeindex; template void foo(const T a) { std::cout 2022. 9. 26.
1. Template Instantiation 본 글은 코드누리의 Template Programming 강좌를 개인 학습 목적으로 정리한 글 입니다. https://www.ecourse.co.kr/course-status/ 템플릿 템플릿은 함수를 만드는 틀 특정 함수에 대해 많은 함수 오버로딩이 필요한 경우 유용하다. 템플릿 인스턴스화 템플릿은 말 그대로 함수를 만드는 틀이기 때문에 그 자체는 함수가 아니다. 클래스처럼 필요할 때 인스턴스를 만드는 개념 이런 인스턴스는 명시적 인스턴스화, 암시적 인스턴스화로 나뉜다. 암시적 인스턴스화는 통상 평소에 사용하는 것처럼 square a; 이런 식으로 사용하는 것 명시적 인스턴스화는 사용하기 전에 위에서 사용할 것이라고 미리 선언해준다. 암시적 인스턴스화 #include #include using names.. 2022. 9. 26.
CPP_1. AssortRock 9일차 오프라인 수업_220919 해시 테이블 Direct Addressing Table : 값을 인덱스로 사용하는 방식 ('A' = 65이므로 65번 인덱스로 'A'의 유무를 체크) 이 방식을 다른 말로 해시테이블이라고 한다. 해시테이블은 해시 함수가 있는데 문자를 넣어주면 고유의 식을 이용하여 결과물을 반환해준다. 해시테이블의 장점은 암호화를 할 수 있고 속도가 빠름 단점은 다른 값에 대해 동일한 해시값이 나올 수 있음 그럼 해시 충돌이 발생하고 그걸 연결 리스트로 주렁 주렁 연결함 이걸 해시 체이닝이라고 한다(면접 단골 질문) 연산자 오버로딩에 대하여 사용자정의 타입에 대해 덧셈 뺄셈을 하려면 인자를 빼서 걔네끼리 더해주고 빼주고 해야 함 클래스와 클래스 간의 연산을 하고 싶다면? Vector2 v3 = v1 + v2 반환값 ope.. 2022. 9. 20.