반응형
| 용어 | 설명 |
| 얕은 복사 | 복사 대상이 주솟값이므로 참조하는 값이 서로 같다. 따라서 원본 값이 바뀌면 복사한 값도 바뀐 값을 참조한다. |
| 깊은 복사 | 서로 다른 독립적인 메모리에 실제 값가지 복사하는 것이다.(컨테이너의 여러개의 원소를 복사해야하는 경우 표준 라이브러리의 copy 함수를 활용하면 코드의 간결함과 성능까지 확보할 수 있다.) |
| 난수 생성 | 1. <random> 헤더 파일의 32bit 버전의 std::mt19937, 64bit 버전의 std::mt19937_64 2. 시간을 시작 숫자(시드값)로 활용하여 난수 생성 3. <random> 헤더 파일의 random_device 를 사용, 하드웨어 엔트로피를 시작 숫자(시드값)으로 활용하여 난수 생성 |
| 컨셉(Concept) | 템플릿의 타입에 “어떤 연산이 가능한가”를 명시적으로 제약하는 기능으로, 코드의 안정성, 가독성, 컴파일 오류 가독성을 모두 향상시키는 C++20의 핵심 기능이다. 예시) #include <concepts> // concept 사용을 위해 필요 #include <iostream> template <std::integral T> // ✅ 정수형만 허용 T add(T a, T b) { return a + b; } int main() { std::cout << add(3, 5) << '\n'; // OK // std::cout << add(3.2, 4.5); // ❌ 컴파일 오류: double은 integral 아님 } |
| 코루틴(Coroutine) | co_yield, co_await, co_return 을 이용해 함수 실행을 중단하고 재개할 수 있는 구조로, 비동기 처리, 지연 계산, 제너레이터를 효율적으로 구현할 수 있게 해준다. 스레드보다 훨씬 가볍고 빠름 (컨텍스트 스위칭 없음) |
| 모나드(Monad) | “값을 감싼 컨테이너”로, 연산을 안전하게 연결(bind) 하여 에러나 부작용을 최소화하는 함수형 설계 패턴이다. C++에서는 std::optional, std::future, Result 등이 대표적인 모나드 구현체이다. |
| 함수 포인터 | 콜백을 구현할 때 자주 사용됩니다. 프로그램에서 다른 함수에 의해 특정한 실행이 필요할 때 호출되는 함수 예시 1) #include <iostream> using namespace std; void process(int x, int y, int (*op)(int, int)) { cout << "결과: " << op(x, y) << endl; } int add(int a, int b) { return a + b; } int mul(int a, int b) { return a * b; } int main() { process(2, 3, add); // 함수 포인터 전달 process(2, 3, mul); } 예시 2) #include <iostream> using namespace std; class MyClass { public: void hello() { cout << "Hello!" << endl; } void bye() { cout << "Goodbye!" << endl; } }; int main() { MyClass obj; // 멤버 함수 포인터 선언 void (MyClass::*fp)(); // hello 함수 주소 저장 fp = &MyClass::hello; (obj.*fp)(); // 호출 방식 (중요!) // bye 함수 주소 저장 fp = &MyClass::bye; (obj.*fp)(); // 호출 } |
| 함자 | 1. 함수 객체를 의미 한다. 즉 함수처럼 호출할 수 있는 객체를 말한다. 2. 함수 호출 연산자 operator() 를 오버로딩하여 정의한다. 예시) #include <iostream> using namespace std; struct bomb { void operator()() { cout << "꽝!" << endl; } void operator()(int range) { cout << "반경 " << range << "m내 플레이어 공격!" << endl; } }; int main() { bomb mine; mine(); mine(30); return 0; } |
반응형
'Programming Language > C++' 카테고리의 다른 글
| 시간 복잡도 (0) | 2025.11.05 |
|---|---|
| 컨테이너와 반복자 (0) | 2025.11.05 |
| 템플릿 (0) | 2025.11.03 |
| 객체지향 설계 원칙 (0) | 2025.11.03 |
| 다형성을 활용한 디자인 패턴 (0) | 2025.11.03 |
