1. 일반화 (Generics):
- 일반화는 코드의 재사용성을 높이기 위한 개념입니다.
- 일반화를 사용하면 동일한 코드를 여러 다른 데이터 유형에 대해 재사용할 수 있습니다.
2. 템플릿 (Templates):
- C++에서 템플릿은 일반화를 구현하는 데 사용되는 강력한 도구입니다.
- 함수 템플릿과 클래스 템플릿 두 가지 형태로 제공됩니다.
- 템플릿을 사용하면 데이터 유형을 매개변수화하여 다양한 데이터 유형에 대한 코드를 작성할 수 있습니다.
3. 제너릭 함수 및 클래스 (Generic Functions and Classes):
- 제너릭 함수와 클래스는 일반화된 템플릿을 기반으로 한 함수와 클래스입니다.
- 데이터 유형을 인수로 받아들이거나 클래스의 멤버로 사용하는 대신, 템플릿 매개변수를 사용하여 일반적인 동작을 수행합니다.
4. C++ STL (Standard Template Library):
- C++ STL은 표준 라이브러리로서 다양한 데이터 구조와 알고리즘을 제공합니다.
- STL은 벡터, 리스트, 큐, 스택, 맵, 세트 등과 같은 컨테이너와 정렬, 검색, 반복 등과 같은 알고리즘을 제공합니다.
- STL 컨테이너 및 알고리즘은 템플릿을 기반으로 구현되어 일반화된 사용을 허용합니다.
5. auto:
- `auto` 키워드는 C++11 이후 도입된 것으로, 변수의 데이터 유형을 컴파일러가 자동으로 추론하도록 합니다.
- 코드를 간결하게 작성하고, 복잡한 데이터 유형을 간편하게 처리할 수 있도록 도와줍니다.
6. 람다 (Lambda):
- 람다는 익명 함수를 만들기 위한 편리한 방법입니다.
- 주로 함수 객체(함수를 변수처럼 다룸)를 만들거나, 간단한 함수를 인라인으로 정의할 때 사용됩니다.
- 람다 표현식은 다른 함수에 전달하거나, STL 알고리즘과 함께 사용할 때 유용합니다.
간단한 예시:
// 함수 템플릿 예제
template <typename T>
T Max(T a, T b) {
return (a > b) ? a : b;
}
int main() {
int x = 5, y = 10;
double a = 3.5, b = 8.2;
int result1 = Max(x, y);
double result2 = Max(a, b);
auto lambda = [](int p, int q) { return p + q; };
int sum = lambda(3, 4);
return 0;
}
이것은 간단한 예제로, C++의 일반화, 템플릿, STL, auto 및 람다를 사용하는 방법을 보여줍니다. C++에서 이러한 개념들을 더 깊이 파고들면 많은 강력한 프로그래밍 기법을 사용할 수 있습니다.