상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - C++에서 variadic templates의 사용법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
C++에서 variadic templates는 함수나 클래스가 가변적인 수의 템플릿 인자를 받을 수 있도록 해주는 강력한 기능입니다. C++11에서 도입된 이 기능은 템플릿 메타프로그래밍을 더욱 유연하고 강력하게 만들어 줍니다. variadic templates를 사용하면, 다양한 수의 인자를 처리하는 함수나 클래스를 쉽게 정의할 수 있습니다. 기본 개념 Variadic templates는 템플릿 매개변수 목록에서 `...`를 사용하여 정의됩니다. 이 `...`는 "variadic"를 의미하며, 여러 개의 인자를 받을 수 있음을 나타냅니다. 함수 템플릿 예제 다음은 variadic templates를 사용하여 여러 개의 인자를 받아서 합계를 계산하는 함수 템플릿의 예입니다. ```cpp include <iostream> // 기본 case: 인자가 없을 때 int sum() { return 0; // 인자가 없으면 0을 반환 } // 재귀적으로 인자를 처리하는 variadic template 함수 template<typename T, typename... Args> T sum(T first, Args... args) { return first + sum(args...); // 첫 번째 인자와 나머지 인자들의 합을 재귀적으로 계산 } int main() { std::cout << sum(1, 2, 3, 4, 5) << std::endl; // 15 std::cout << sum(10.5, 2.5, 3.0) << std::endl; // 16.0 return 0; } ``` 위의 예제에서 `sum` 함수는 첫 번째 인자를 받고, 나머지 인자들을 재귀적으로 처리합니다. 기본 case인 인자가 없을 때는 0을 반환합니다. 클래스 템플릿 예제 Variadic templates는 클래스 템플릿에서도 사용할 수 있습니다. 다음은 여러 개의 타입을 받아서 저장하는 간단한 클래스 템플릿의 예입니다. ```cpp include <iostream> include <tuple> template<typename... Args> class MyTuple { public: std::tuple<Args...> data; MyTuple(Args... args) : data(args...) {} void print() { printHelper(std::index_sequence_for<Args...>{}); } private: template<std::size_t... Is> void printHelper(std::index_sequence<Is...>) { ((std::cout << std::get<Is>(data) << " "), ...); // C++17의 fold expression 사용 std::cout << std::endl; } }; int main() { MyTuple<int, double, std::string> myTuple(1, 2.5, "Hello"); myTuple.print(); // 1 2.5 Hello return 0; } ``` 위의 `MyTuple` 클래스는 가변적인 수의 타입을 받아서 `std::tuple`에 저장합니다. `print` 메서드는 저장된 값을 출력합니다. 주의사항 1. 템플릿 인자 수 : variadic templates는 인자의 수에 제한이 없지만, 너무 많은 인자를 사용할 경우 컴파<a href='https://sangseek.com/sangseeks/일 시간/ko'>일 시간</a>이 길어질 수 있습니다. 2. 타입 일치 : variadic templates를 사용할 때는 각 인자의 타입이 일치해야 합니다. 예를 들어, `sum` 함수는 모든 인자가 <a href='https://sangseek.com/sangseeks/같은 타입/ko'>같은 타입</a>이어야 합니다. 3. 기본 case : variadic templates를 사용할 때는 기본 case를 정의하는 것이 중요합니다. 그렇지 않으면 무한 재귀 호출이 발생할 수 있습니다. 결론 C++의 variadic templates는 함수와 클래스에서 가변적인 수의 인자를 처리할 수 있는 유용한 기능입니다. 이를 통해 코드의 유연성과 재사용성을 높일 수 있으며, 템플릿 메타프로그래밍을 더욱 강력하게 활용할 수 있습니다. 다양한 예제를 통해 variadic templates의 사용법을 익히고, 실제 프로젝트에 적용해 보세요.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기