CRBMultiMap 클래스

비고

ATL(활성 템플릿 라이브러리)은 계속 지원됩니다. 그러나 더 이상 기능을 추가하거나 설명서를 업데이트하지 않습니다.

이 클래스는 Red-Black 이진 트리를 사용하여 각 키를 둘 이상의 값과 연결할 수 있는 매핑 구조를 나타냅니다.

구문

template<typename K,
         typename V,
         class KTraits = CElementTraits<K>,
         class VTraits = CElementTraits<V>>
class CRBMultiMap : public CRBTree<K, V, KTraits, VTraits>

매개 변수

K
키 요소 형식입니다.

V
값 요소 형식입니다.

KTraits
키 요소를 복사하거나 이동하는 데 사용되는 코드입니다. 자세한 내용은 CElementTraits 클래스를 참조하세요.

VTraits
값 요소를 복사하거나 이동하는 데 사용되는 코드입니다.

멤버

공용 생성자

속성 설명
CRBMultiMap::CRBMultiMap 생성자입니다.
CRBMultiMap::~CRBMultiMap 소멸자입니다.

공용 메서드

속성 설명
CRBMultiMap::FindFirstWithKey 지정된 키를 사용하여 첫 번째 요소의 위치를 찾으려면 이 메서드를 호출합니다.
CRBMultiMap::GetNextValueWithKey 이 메서드를 호출하여 지정된 키와 연결된 값을 가져와 위치 값을 업데이트합니다.
CRBMultiMap::GetNextWithKey 지정된 키와 연결된 요소를 가져와 위치 값을 업데이트하려면 이 메서드를 호출합니다.
CRBMultiMap::Insert 맵에 요소 쌍을 삽입하려면 이 메서드를 호출합니다.
CRBMultiMap::RemoveKey 지정된 키에 대한 모든 키/값 요소를 제거하려면 이 메서드를 호출합니다.

설명

CRBMultiMap 에서는 지정된 형식의 매핑 배열을 지원하여 정렬된 키 요소 및 값 배열을 관리합니다. CRBMap 클래스와 달리 각 키는 둘 이상의 값과 연결할 수 있습니다.

요소(키 및 값으로 구성됨)는 CRBMultiMap::Insert 메서드를 사용하여 이진 트리 구조에 저장됩니다. 지정된 키와 일치하는 모든 요소를 삭제하는 CRBMultiMap::RemoveKey 메서드를 사용하여 요소를 제거할 수 있습니다.

CRBTree::GetHeadPosition, CRBTree::GetNext 및 CRBTree::GetNextValue같은 메서드를 사용하여 트리를 트래버스할 수 있습니다. CRBMultiMap::FindFirstWithKey, CRBMultiMap::GetNextValueWithKeyCRBMultiMap::GetNextWithKey 메서드를 사용하여 키당 잠재적으로 여러 값에 액세스할 수 있습니다. 실제로 이에 대한 설명은 CRBMultiMap::CRBMultiMap 에 대한 예제를 참조하세요.

KTraitsVTraits 매개 변수는 요소를 복사하거나 이동하는 데 필요한 추가 코드를 포함하는 특성 클래스입니다.

CRBMultiMap는 빨간색-검정 알고리즘을 사용하여 이진 트리를 구현하는 CRBTree에서 파생됩니다. CAtlMapCRBMultiMap대한 대안 CRBMap 으로 제공됩니다. 소수의 요소만 저장해야 하는 경우 CSimpleMap 클래스를 대신 사용하는 것이 좋습니다.

다양한 컬렉션 클래스 및 해당 기능 및 성능 특성에 대한 자세한 내용은 ATL 컬렉션 클래스를 참조 하세요.

상속 계층 구조

CRBTree

CRBMultiMap

요구 사항

헤더: atlcoll.h

CRBMultiMap::CRBMultiMap

생성자입니다.

explicit CRBMultiMap(size_t nBlockSize = 10) throw();

매개 변수

nBlockSize
블록 크기입니다.

설명

nBlockSize 매개 변수는 새 요소가 필요할 때 할당된 메모리 양에 대한 측정값입니다. 블록 크기가 클수록 메모리 할당 루틴에 대한 호출이 줄어들지만 더 많은 리소스를 사용합니다. 기본값은 한 번에 10 요소에 대한 공간을 할당합니다.

사용 가능한 다른 방법에 대한 자세한 내용은 기본 클래스 CRBTree 에 대한 설명서를 참조하세요.

예시

// Define a multimap object which has an integer
// key, a double value, and a block size of 5
CRBMultiMap<int, double> myMap(5);

// Add some key/values. Notice how three
// different values are associated with 
// one key. In a CRBMap object, the values
// would simply overwrite each other.
myMap.Insert(0, 1.1);
myMap.Insert(0, 1.2);
myMap.Insert(0, 1.3);
myMap.Insert(1, 2.1);

// Look up a key and iterate through
// all associated values

double v;
POSITION myPos = myMap.FindFirstWithKey(0);

while (myPos != NULL)
{
   v = myMap.GetNextValueWithKey(myPos,0);
   // As the loop iterates, v 
   // contains the values 1.3, 1.2, 1.1
}

// Remove all of the values associated with that key
size_t i = myMap.RemoveKey(0);

// Confirm all three values were deleted
ATLASSERT(i == 3);

CRBMultiMap::~CRBMultiMap

소멸자입니다.

~CRBMultiMap() throw();

설명

할당된 리소스를 해제합니다.

사용 가능한 다른 방법에 대한 자세한 내용은 기본 클래스 CRBTree 에 대한 설명서를 참조하세요.

CRBMultiMap::FindFirstWithKey

지정된 키를 사용하여 첫 번째 요소의 위치를 찾으려면 이 메서드를 호출합니다.

POSITION FindFirstWithKey(KINARGTYPE key) const throw();

매개 변수

key
찾을 요소를 식별하는 키를 지정합니다.

반환 값

키가 있으면 첫 번째 키/값 요소의 POSITION을 반환하고, 그렇지 않으면 NULL을 반환합니다.

설명

키에는 CRBMultiMap 하나 이상의 연결된 값이 있을 수 있습니다. 이 메서드는 해당 특정 키와 연결된 첫 번째 값(실제로 유일한 값일 수 있음)의 위치 값을 제공합니다. 반환된 위치 값을 CRBMultiMap::GetNextValueWithKey 또는 CRBMultiMap::GetNextWithKey와 함께 사용하여 값을 가져오고 위치를 업데이트할 수 있습니다.

사용 가능한 다른 방법에 대한 자세한 내용은 기본 클래스 CRBTree 에 대한 설명서를 참조하세요.

예시

CRBMultiMap::CRBMultiMap에 대한 예제를 참조하세요.

CRBMultiMap::GetNextValueWithKey

지정된 키와 연결된 값을 가져와 위치 값을 업데이트하려면 이 메서드를 호출합니다.

const V& GetNextValueWithKey(
    POSITION& pos,
    KINARGTYPE key) const throw();
V& GetNextValueWithKey(
    POSITION& pos,
    KINARGTYPE key) throw();

매개 변수

pos
CRBMultiMap::FindFirstWithKey 또는 CRBMultiMap::GetNextWithKey에 대한 호출 또는 이전 호출을 사용하여 GetNextValueWithKey가져온 위치 값입니다.

key
찾을 요소를 식별하는 키를 지정합니다.

반환 값

지정된 키와 연결된 요소 쌍을 반환합니다.

설명

위치 값은 키와 연결된 다음 값을 가리키도록 업데이트됩니다. 값이 더 이상 없으면 위치 값이 NULL로 설정됩니다.

사용 가능한 다른 방법에 대한 자세한 내용은 기본 클래스 CRBTree 에 대한 설명서를 참조하세요.

예시

CRBMultiMap::CRBMultiMap에 대한 예제를 참조하세요.

CRBMultiMap::GetNextWithKey

지정된 키와 연결된 요소를 가져와 위치 값을 업데이트하려면 이 메서드를 호출합니다.

const CPair* GetNextWithKey(
    POSITION& pos,
    KINARGTYPE key) const throw();
CPair* GetNextWithKey(
    POSITION& pos,
    KINARGTYPE key) throw();

매개 변수

pos
CRBMultiMap::FindFirstWithKey 또는 CRBMultiMap::GetNextValueWithKey에 대한 호출 또는 이전 호출을 사용하여 GetNextWithKey가져온 위치 값입니다.

key
찾을 요소를 식별하는 키를 지정합니다.

반환 값

지정된 키와 연결된 다음 CRBTree::CPair 클래스 요소를 반환합니다.

설명

위치 값은 키와 연결된 다음 값을 가리키도록 업데이트됩니다. 값이 더 이상 없으면 위치 값이 NULL로 설정됩니다.

사용 가능한 다른 방법에 대한 자세한 내용은 기본 클래스 CRBTree 에 대한 설명서를 참조하세요.

CRBMultiMap::Insert

맵에 요소 쌍을 삽입하려면 이 메서드를 호출합니다.

POSITION Insert(KINARGTYPE key, VINARGTYPE value) throw(...);

매개 변수

key
개체에 추가할 키 값입니다 CRBMultiMap .

value
CRBMultiMap연결된 개체에 추가할 값입니다.

반환 값

개체에서 키/값 요소 쌍의 CRBMultiMap 위치를 반환합니다.

설명

사용 가능한 다른 방법에 대한 자세한 내용은 기본 클래스 CRBTree 에 대한 설명서를 참조하세요.

예시

CRBMultiMap::CRBMultiMap에 대한 예제를 참조하세요.

CRBMultiMap::RemoveKey

지정된 키에 대한 모든 키/값 요소를 제거하려면 이 메서드를 호출합니다.

size_t RemoveKey(KINARGTYPE key) throw();

매개 변수

key
삭제할 요소를 식별하는 키를 지정합니다.

반환 값

지정된 키와 연결된 값의 수를 반환합니다.

설명

RemoveKey는 키와 일치하는 키가 있는 모든 키/값 요소를 삭제합니다.

사용 가능한 다른 방법에 대한 자세한 내용은 기본 클래스 CRBTree 에 대한 설명서를 참조하세요.

예시

CRBMultiMap::CRBMultiMap에 대한 예제를 참조하세요.

참고 항목

CRBTree 클래스
CAtlMap 클래스
CRBMap 클래스
클래스 개요