Класс 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
Конструктор.
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() throw();
Освобождает все выделенные ресурсы.
Дополнительные сведения о других доступных методах см. в документации по базовому классу CRBTree .
Вызовите этот метод для поиска ключей или значений в объекте 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
объекта, учитывая ключ.
bool RemoveKey(KINARGTYPE key) throw();
key
Ключ, соответствующий паре элементов, которую требуется удалить.
Возвращает значение true, если ключ найден и удален, значение false при сбое.
Дополнительные сведения о других доступных методах см. в документации по базовому классу CRBTree .
// Remove an element, based on the key of 0
ATLVERIFY(myMap.RemoveKey(0) == true);
Вызовите этот метод, чтобы вставить пару элементов в карту.
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
Общие сведения о классе