Класс 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.
Иерархия наследования
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
Общие сведения о классе