Класс CTypedPtrMap

Предоставляет типобезопасную "программу-оболочку" для объектов классов карты указателей CMapPtrToPtr, CMapPtrToWord, CMapWordToPtrи CMapStringToPtr.

Синтаксис

template<class BASE_CLASS, class KEY, class VALUE>
class CTypedPtrMap : public BASE_CLASS

Параметры

BASE_CLASS
Базовый класс класса типизированной карты указателя; должен быть классом карты указателя (CMapPtrToPtr, , CMapWordToPtrCMapPtrToWordили CMapStringToPtr).

KEY
Класс объекта, используемого в качестве ключа для карты.

VALUE
Класс объекта, хранящегося на карте.

Участники

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

Имя Описание
CTypedPtrMap::GetNextAssoc Возвращает следующий элемент для итерации.
CTypedPtrMap::Lookup Возвращает значение KEY на VALUEоснове .
CTypedPtrMap::RemoveKey Удаляет элемент, указанный ключом.
CTypedPtrMap::SetAt Вставляет элемент в карту; заменяет существующий элемент, если найден соответствующий ключ.

Открытые операторы

Имя Описание
CTypedPtrMap::operator [ ] Вставляет элемент в карту.

Замечания

При использовании CTypedPtrMapсредство проверка типа C++ помогает устранить ошибки, вызванные несоответствием типов указателей.

Так как все CTypedPtrMap функции являются встроенными, использование этого шаблона значительно не влияет на размер или скорость кода.

Дополнительные сведения об использовании CTypedPtrMapсм. в статьях коллекции и классы на основе шаблонов.

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

BASE_CLASS

CTypedPtrMap

Требования

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

CTypedPtrMap::GetNextAssoc

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

void GetNextAssoc(
    POSITION& rPosition,
    KEY& rKey,
    VALUE& rValue) const;

Параметры

rPosition
Указывает ссылку на значение POSITION, возвращаемое предыдущим GetNextAssoc или BASE_CLASSвызовом ::GetStartPosition .

KEY
Параметр шаблона, указывающий тип ключей карты.

rKey
Указывает возвращаемый ключ извлеченного элемента.

VALUE
Параметр шаблона, указывающий тип значений карты.

Rvalue
Указывает возвращаемое значение извлеченного элемента.

Замечания

Эта функция наиболее полезна для итерации всех элементов в карте. Обратите внимание, что последовательность позиций не обязательно совпадает с последовательностью значений ключа.

Если полученный элемент является последним в карте, новое значение имеет значение rNextPosition NULL.

Эта встроенная функция вызывает BASE_CLASS::GetNextAssoc.

CTypedPtrMap::Lookup

Lookup использует алгоритм хэширования для быстрого поиска элемента карты с ключом, соответствующим точно.

BOOL Lookup(BASE_CLASS ::BASE_ARG_KEY key, VALUE& rValue) const;

Параметры

BASE_CLASS
Параметр шаблона, указывающий базовый класс этого класса карты.

key
Ключ элемента, который необходимо найти.

VALUE
Параметр шаблона, указывающий тип значений, хранящихся на этой карте.

Rvalue
Указывает возвращаемое значение извлеченного элемента.

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

Ненулевое значение, если элемент найден; в противном случае — 0.

Замечания

Эта встроенная функция вызывает BASE_CLASS::Lookup.

CTypedPtrMap::operator [ ]

Этот оператор можно использовать только в левой части инструкции присваивания (l-value).

VALUE& operator[ ](base_class ::base_arg_key key);

Параметры

VALUE
Параметр шаблона, указывающий тип значений, хранящихся на этой карте.

BASE_CLASS
Параметр шаблона, указывающий базовый класс этого класса карты.

key
Ключ элемента, который нужно найти или создать на карте.

Замечания

Если элемент map с указанным ключом отсутствует, создается новый элемент. Нет эквивалента "правой стороны" (r-value) этому оператору, так как существует вероятность того, что ключ не найден на карте. Используйте функцию-член Lookup для извлечения элементов.

CTypedPtrMap::RemoveKey

Эта функция-член вызывает BASE_CLASS::RemoveKey.

BOOL RemoveKey(KEY key);

Параметры

KEY
Параметр шаблона, указывающий тип ключей карты.

key
Ключ для удаления элемента.

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

Ненулевое значение, если запись найдена и успешно удалена; в противном случае — 0.

Замечания

Дополнительные замечания см. в разделе CMapStringToOb::RemoveKey.

CTypedPtrMap::SetAt

Эта функция-член вызывает BASE_CLASS::SetAt.

void SetAt(KEY key, VALUE newValue);

Параметры

KEY
Параметр шаблона, указывающий тип ключей карты.

key
Указывает ключевое значение newValue.

newValue
Указывает указатель объекта, который является значением нового элемента.

Замечания

Дополнительные замечания см. в разделе CMapStringToOb::SetAt.

См. также

Пример MFC COLLECT
Диаграмма иерархии
Класс CMapPtrToPtr
Класс CMapPtrToWord
Класс CMapWordToPtr
Класс CMapStringToPtr