비고
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::GetNextValueWithKey 및 CRBMultiMap::GetNextWithKey 메서드를 사용하여 키당 잠재적으로 여러 값에 액세스할 수 있습니다. 실제로 이에 대한 설명은 CRBMultiMap::CRBMultiMap 에 대한 예제를 참조하세요.
KTraits 및 VTraits 매개 변수는 요소를 복사하거나 이동하는 데 필요한 추가 코드를 포함하는 특성 클래스입니다.
CRBMultiMap는 빨간색-검정 알고리즘을 사용하여 이진 트리를 구현하는 CRBTree에서 파생됩니다. CAtlMapCRBMultiMap대한 대안 CRBMap 으로 제공됩니다. 소수의 요소만 저장해야 하는 경우 CSimpleMap 클래스를 대신 사용하는 것이 좋습니다.
다양한 컬렉션 클래스 및 해당 기능 및 성능 특성에 대한 자세한 내용은 ATL 컬렉션 클래스를 참조 하세요.
상속 계층 구조
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에 대한 예제를 참조하세요.