컴파일 시 유형이 STL 컨테이너인지 확인
많은 프로그래밍 시나리오에서 유형이 STL 컨테이너인지 여부를 아는 것이 도움이 될 수 있습니다. 특정 유형은 컴파일 타임에 STL 컨테이너입니다. 이를 통해 사용되는 컨테이너 유형에 따라 알고리즘 또는 데이터 구조를 최적화할 수 있습니다.
한 가지 접근 방식은 템플릿 구조를 활용하여 컨테이너 유형을 결정하는 것입니다.
struct is_cont{}; struct not_cont{}; template <typename T> struct is_cont { typedef not_cont result_t; };
그러나 이 접근 방식은 std::Vector 및 std::deque와 같은 각 STL 컨테이너 유형에 대한 특수화를 생성해야 합니다.
보다 포괄적인 솔루션에는 도우미 클래스 템플릿을 사용하는 것이 포함됩니다.
template<typename T> struct is_container : std::integral_constant<bool, has_const_iterator<T>::value && has_begin_end<T>::beg_value && has_begin_end<T>::end_value> { };
이 클래스 템플릿은 다음을 확인합니다. 다음 속성의 경우:
사용법示例:
std::cout << is_container<std::vector<int>>::value << std::endl; // true std::cout << is_container<std::list<int>>::value << std::endl; // true std::cout << is_container<std::map<int>>::value << std::endl; // true std::cout << is_container<std::set<int>>::value << std::endl; // true std::cout << is_container<int>::value << std::endl; // false
위 내용은 컴파일 타임에 유형이 STL 컨테이너인지 어떻게 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!