Поделиться через


Класс CRBMap

Этот класс представляет структуру сопоставления, используя двоичное дерево Red-Black.

Синтаксис

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

Параметры

K
Тип ключевого элемента.

V
Тип элемента value.

KTraits
Код, используемый для копирования или перемещения ключевых элементов. Дополнительные сведения см. в классе CElementTraits.

Виртуальные признаки
Код, используемый для копирования или перемещения элементов значения.

Участники

Открытые конструкторы

Имя Описание
CRBMap::CRBMap Конструктор.
CRBMap::~CRBMap Деструктор

Открытые методы

Имя Описание
CRBMap::Lookup Вызовите этот метод для поиска ключей или значений в объекте CRBMap .
CRBMap::RemoveKey Вызовите этот метод, чтобы удалить элемент из CRBMap объекта, учитывая ключ.
CRBMap::SetAt Вызовите этот метод, чтобы вставить пару элементов в карту.

Замечания

CRBMap обеспечивает поддержку массива сопоставления любого заданного типа, управление упорядоченным массивом ключевых элементов и их связанными значениями. Каждый ключ может иметь только одно связанное значение. Элементы (состоящие из ключа и значения) хранятся в двоичной структуре дерева с помощью метода CRBMap::SetAt . Элементы можно удалить с помощью метода CRBMap::RemoveKey , который удаляет элемент с заданным значением ключа.

Обход дерева возможен с помощью таких методов, как CRBTree::GetHeadPosition, CRBTree::GetNext и CRBTree::GetNextValue.

Параметры KTraits и VTraits — это классы признаков, содержащие любой дополнительный код, необходимый для копирования или перемещения элементов.

CRBMap является производным от CRBTree, который реализует двоичное дерево с помощью алгоритма Red-Black. CRBMultiMap — это вариант, который позволяет использовать несколько значений для каждого ключа. Он тоже является производным от CRBTree, и поэтому использует множество функций с CRBMap.

Альтернатива обоим CRBMap CRBMultiMap и предлагается классом CAtlMap . Если нужно хранить только небольшое количество элементов, рассмотрите возможность использования класса CSimpleMap .

Более подробное обсуждение различных классов коллекций и их характеристик и характеристик производительности см. в классах коллекций ATL.

Иерархия наследования

CRBTree

CRBMap

Требования

Заголовок: atlcoll.h

CRBMap::CRBMap

Конструктор.

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

Параметры

nBlockSize
Размер блока.

Замечания

Параметр nBlockSize — это мера объема памяти, выделенного при необходимости нового элемента. Более крупные размеры блоков сокращают вызовы подпрограмм выделения памяти, но используют больше ресурсов. Значение по умолчанию выделяется для 10 элементов одновременно.

Дополнительные сведения о других доступных методах см. в документации по базовому классу CRBTree .

Пример

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

CRBMap::~CRBMap

Деструктор

~CRBMap() throw();

Замечания

Освобождает все выделенные ресурсы.

Дополнительные сведения о других доступных методах см. в документации по базовому классу CRBTree .

CRBMap::Lookup

Вызовите этот метод для поиска ключей или значений в объекте CRBMap .

bool Lookup(KINARGTYPE key, VOUTARGTYPE value) const throw(...);
const CPair* Lookup(KINARGTYPE key) const throw();
CPair* Lookup(KINARGTYPE key) throw();

Параметры

key
Указывает ключ, определяющий элемент для поиска.

значение
Переменная, получающая значение подстановки.

Возвращаемое значение

Первая форма метода возвращает значение true, если ключ найден, в противном случае — false. Второй и третий формы возвращают указатель на CPair.

Замечания

Дополнительные сведения о других доступных методах см. в документации по базовому классу CRBTree .

Пример

// Look up the value for a key of 0
double v;
myMap.Lookup(0,v);

CRBMap::RemoveKey

Вызовите этот метод, чтобы удалить элемент из CRBMap объекта, учитывая ключ.

bool RemoveKey(KINARGTYPE key) throw();

Параметры

key
Ключ, соответствующий паре элементов, которую требуется удалить.

Возвращаемое значение

Возвращает значение true, если ключ найден и удален, значение false при сбое.

Замечания

Дополнительные сведения о других доступных методах см. в документации по базовому классу CRBTree .

Пример

// Remove an element, based on the key of 0
ATLVERIFY(myMap.RemoveKey(0) == true);

CRBMap::SetAt

Вызовите этот метод, чтобы вставить пару элементов в карту.

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

Параметры

key
Значение ключа для добавления в CRBMap объект.

значение
Значение, добавляемое в CRBMap объект.

Возвращаемое значение

Возвращает позицию пары элементов key/value в объекте CRBMap .

Замечания

SetAt заменяет существующий элемент, если найден соответствующий ключ. Если ключ не найден, создается новая пара "ключ-значение".

Дополнительные сведения о других доступных методах см. в документации по базовому классу CRBTree .

Пример

// Add an element to the map, with a key of 0
myMap.SetAt(0,1.1);

См. также

Класс CRBTree
Класс CAtlMap
Класс CRBMultiMap
Общие сведения о классе