CRBMultiMap 클래스
이 클래스는 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에서 파생됩니다. CAtlMap 클래스에 대한 대안 CRBMultiMap
으로 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
찾을 요소를 식별하는 키를 지정합니다.
Return Value
키가 있으면 첫 번째 키/값 요소의 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
찾을 요소를 식별하는 키를 지정합니다.
Return Value
지정된 키와 연결된 요소 쌍을 반환합니다.
설명
위치 값은 키와 연결된 다음 값을 가리키도록 업데이트됩니다. 값이 더 이상 없으면 위치 값이 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
찾을 요소를 식별하는 키를 지정합니다.
Return Value
지정된 키와 연결된 다음 CRBTree::CPair 클래스 요소를 반환합니다.
설명
위치 값은 키와 연결된 다음 값을 가리키도록 업데이트됩니다. 값이 더 이상 없으면 위치 값이 NULL로 설정됩니다.
사용 가능한 다른 방법에 대한 자세한 내용은 기본 클래스 CRBTree 에 대한 설명서를 참조하세요.
CRBMultiMap::Insert
맵에 요소 쌍을 삽입하려면 이 메서드를 호출합니다.
POSITION Insert(KINARGTYPE key, VINARGTYPE value) throw(...);
매개 변수
key
개체에 추가할 키 값입니다 CRBMultiMap
.
value
키와 연결된 개체에 CRBMultiMap
추가할 값입니다.
Return Value
개체에서 키/값 요소 쌍의 CRBMultiMap
위치를 반환합니다.
설명
사용 가능한 다른 방법에 대한 자세한 내용은 기본 클래스 CRBTree 에 대한 설명서를 참조하세요.
예시
CRBMultiMap::CRBMultiMap에 대한 예제를 참조하세요.
CRBMultiMap::RemoveKey
지정된 키에 대한 모든 키/값 요소를 제거하려면 이 메서드를 호출합니다.
size_t RemoveKey(KINARGTYPE key) throw();
매개 변수
key
삭제할 요소를 식별하는 키를 지정합니다.
Return Value
지정된 키와 연결된 값의 수를 반환합니다.
설명
RemoveKey
는 키와 일치하는 키가 있는 모든 키/값 요소를 삭제합니다.
사용 가능한 다른 방법에 대한 자세한 내용은 기본 클래스 CRBTree 에 대한 설명서를 참조하세요.
예시
CRBMultiMap::CRBMultiMap에 대한 예제를 참조하세요.