프로그래밍 방법론 특색에 STL 반복자의 요약 학습

VALUE_TYPE 반복자 예를 들어, 대응 : 벡터 <INT> :: 그것을 반복자; 형 반복기는 * INT, 상기 대응 반복자 여기 입력 대응 int 형 지칭 실제로 ,, 즉 본원 반복 반복자 지칭 객체의 유형입니다.
때 반복자를 사용하는 것이 때로는 예를 들어, 해당 유형의 VALUE_TYPE 반복자를 사용하는 것이 필요할 수있다, 함수 사용 반복자 타입 VALUE_TYPE 반환 값이 필요할 때, 이번에는 우리는 어떻게 반복자를 구하는 반복자의 유형을 알고 VALUE_TYPE?
이 문제를 해결 STL 방법 :
STL 반복자가 정의 될 때, 문이 포함 된 반면 형 VALUE_TYPE, 즉 :
. (1) 서식 < 클래스 T>
 2  구조체 반복자 {
 3.      VALUE_TYPE T 타입 정의; // 인라인가 VALUE_TYPE 입력 선언 
. 4      T * PTR]
 . 5 };

이렇게되면 다음과 유사 할 수있다 전술 한 요구를 사용 :

. (1) 서식 < 클래스 는 I> 
 2 유형 이름 :: VALUE_TYPE 상기 I // 반환형 
3.  func_exp합니다 (I ITER) {
 4.       * ITER]
 . 5 }

내가 템플릿의 유형 템플릿이 인스턴스화되기 전에, 컴파일러는 내가 무엇을 알고하지 않습니다 때문에, 형태 등의 컴파일러 I :: VALUE_TYPE에게 책임 유형 이름, 내가 모르는 :: VALUE_TYPE는 유형을 나타냅니다.

 

우리는 반복자를 정의하지 않기 때문에 그러나 네이티브 포인터가 반복자로, 우리는 임베디드 형 VALUE_TYPE를 선언 할 수 없습니다.

이 때 VALUE_TYPE 즉 두 개의 경우가, 기본 포인터 맞춤 반복자 반복자 클래스 타입,이를 수득하는 방법으로 얻을 수 없다.

 

상기 두 개의 서로 다른 상황을 해결하기 위해 부분 템플릿 특수화를 사용하여, 독립적 인 VALUE_TYPE 얻을 그리고 프로그래밍 기술을 특색를 사용, 그것은 할 수있다 :

. (1) 서식 < 클래스 는 I>
 2  구조체 iterator_traits는 {
 . 3      , 타입 정의는 VALUE_TYPE에게 VALUE_TYPE 상기 I :: TYPENAME
 . (4)  }
 . 5  
. 6 템플릿 < 클래스 T>를
 . 7  구조체 iterator_traits <T를 *> { // 전문화 때 반복자 네이티브 포인터 
8      의 T VALUE_TYPE의 형식 정의;
 . 9 };

다음이 시간 VALUE_TYPE 재사용에서 인수 네이티브 포인터 문제가 VALUE_TYPE 해결 :

. (1) 서식 < 클래스 T> 
 2 iterator_traits <T> :: VALUE_TYPE // 반환 유형 iterator_traits VALUE_TYPE 타입을 이용하여 추정 
. 3  FUNC (T ITER) {
 . 4       * ITER]
 . 5 }

특성 "특성 추출 기계"

 

 

추천

출처www.cnblogs.com/dabai56/p/11432854.html