2014-01-06 3 views
1

빨강 검정 트리가 구현되어 잘 작동합니다. 그러나 C++에서 템플릿 (제네릭)을 사용하여 모든 데이터 유형에 사용할 수있는 방식으로이 작업을 수행해야합니다. 은 키와 항목 자체는 모두 일반적인 유형 (C++ 템플릿)해야한다, 트리에 항목을 추가 할 때C++ 템플릿 (삽입 방법)

코드 : 당신이 그 2 인자가 일반으로 어떻게해야합니까

RB_Node* RedBTree::RBTInsert(void* key, void* item) 
{ 
    RB_Node* y; 
    RB_Node* x; 
    RB_Node* newNode; 
    //rest of algorithm 
} 

? 나는 C++과 템플릿 자체에 익숙하지 않다. 어떤 도움도 정말 감사 할 것이다.

+2

당신은 아마도'key'와'mapped_type'을 매개 변수로하여 클래스 템플릿을 클래스 템플릿으로 만들고 싶을 것입니다. 영감을 얻으려면'std :: map'을 보라. – juanchopanza

답변

2

template으로 선언을 시작한 다음 적절한 템플릿 매개 변수 세트를 사용하고 void*을 결과 이름으로 바꾼 다음 템플릿 매개 변수를 정상적인 유형 일 수 있습니다. 오래 당신은 일반 형태 인수를 위해 일해야하는 모든 관련 유형과 코드를 필요로하지 않는 한, 당신은 괜찮을거야 :

template <typename Key, typename Value> 
RB_Node* RedBTree<Key, Value>::RBInsert(Key const& key, Value const& item) 
{ 
    // pretty much like before... 
} 

내가 템플릿으로 작업을 시작 내가 처음으로 내 코드를 구현하는 경우 구체적인 유형을 확인하고 작동 여부를 확인한 다음 콘크리트 유형을 템플릿 매개 변수로 대체했습니다. 약간의 시간이 지나면 (나는 5 년 미만으로 생각한다) 먼저 구체적인 유형으로 쓰는 것을 건너 뛴다. 일단 템플릿에 대해 알고 나면 구체적인 유형으로 작성하는 것보다 실제로 개념을 작성하는 것이 더 쉽습니다.