Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CMap 
:(
    Опции темы
interceptor
Дата 30.10.2005, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 4.10.2005

Репутация: нет
Всего: нет



не могу врубится как работает CMap
подключил #include "afxtempl.h"
пишу такую запись
CMap<CString,CString> myMap; что в ней не правльно?
в итоге я хочу списать из файла пары слов< key,значение>
PM MAIL   Вверх
CaptainFlint
Дата 30.10.2005, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

Репутация: 7
Всего: 23



interceptor
См. MSDN:
template <class KEY, class ARG_KEY, class VALUE, class ARG_VALUE> class CMap
Надо указать две пары типов. Для отображения CString->CString будет, соответственно, так:
CMap <CString, LPCTSTR, CString, LPCTSTR> myMap;
А ещё лучше - воспользоваться готовым классом CMapStringToString. ;)


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
interceptor
Дата 31.10.2005, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 4.10.2005

Репутация: нет
Всего: нет



я смотрел в MSDN я там практически ничего не понимаю
дайте ссылку на русском с примерами (CMap,CMapStringToString. )
или скиньте на [email protected] буду очень признателен

PM MAIL   Вверх
Coocky
Дата 31.10.2005, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Цитата

Да, класс CMap является производным от класса CObject. И, подобно другим классам коллекций MFC - CArray и CList, является шаблонным.

template <class KEY, class ARG_KEY, class VALUE,
class ARG_VALUE> class CMap : public CObject

KEY - класс объектов используемых в качестве ключей словаря
ARG_KEY - тип данных используемый для доступа к ключам (обычно, ссылка на KEY)
VALUE  - класс объектов сохраняемых в словаре
ARG_VALUE - тип данных используемый для доступа к объектам сохраненным
в словаре (обычно, ссылка на VALUE)

Надеюсь, что данное известие Вас не удивило. Если так, то разберем методы данного класса.

BOOL Lookup( ARG_KEY key, VALUE& rValue ) const; - выполняет поиск
значения ассоциированого с ключем key. Возвращаемое значение не равно 0,
если элемент с заданным ключем был найден.
void SetAt( ARG_KEY key, ARG_VALUE newValue );  - добавляет элемент
в словарь.
ВНИМАНИЕ: Если добавляемый элемент содержит ключ, который уже имеется в
словаре, то элемент, сохраненный в словаре, будет заменен на новый
(добавляемый).

BOOL RemoveKey( ARG_KEY key ); - ищет и удаляет один элемент
(пара-значение)  из словаря. Вовзращаемое значение не ноль, если элемент
был найден и удачно удален из словаря.

void RemoveAll( ); - удаляет все элементы из словаря.

POSITION GetStartPosition( ) const; - считывает позицию первого
элемента словаря. (Тип данных POSITION Вам уже знаком по CArray и CList).

void GetNextAssoc( POSITION& rNextPosition, KEY& rKey, VALUE&
rValue ) const; - считывает следующий элемент, при последовательном переборе
элементов словаря.

UINT GetHashTableSize( ) const; - возвращает количество элементов
в хеш-таблице словаря.

void InitHashTable( UINT hashSize );  - инициализирует хеш-таблицу
словаря. Параметр hashSize - задает размер хеш-таблицы.

int GetCount( ) const; - возврашает количество элементов в словаре.

BOOL IsEmpty( ) const; - возвращает не ноль, если словарь не содержит
элементов.



CMap позволяет работать со словарями. Но этим в MFC словари не ограничены. Разработчики MFC предоставляют в Ваше использование еще ряд классов-словарей, которые работают с определенными типами данных.


Замечу, что все данные классы обладают схожими методами (как по названию, так и по смыслу) и различаются только типом используемых элементов (пара: ключ-значение).

Класс CMapWordToPtr - ключем выступает аргумент типа WORD (2 байта), а значением - указатель на void.

Класс CMapPtrToWord - ключем выступает указатель на void, а значением - аргумент типа WORD.

Класс CMapPtrToPtr - ключем и значением выступает указатель на void.

Класс CMapWordToOb - ключем выступает аргумент типа WORD, а значением указатель на CObject.

Класс CMapStringToPtr - ключ - объект класса CString, значение - указатель на void.

Класс CMapStringToOb - ключ - объект класса CString, значение - указатель на CObject.

Класс CMapStringToString - ключ - объект класса CString, значение - объект класса CString.





--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Coocky
Дата 31.10.2005, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Вот пример для работы...

Присоединённый файл ( Кол-во скачиваний: 28 )
Присоединённый файл  ExMap.rar 35,13 Kb


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
interceptor
Дата 31.10.2005, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 4.10.2005

Репутация: нет
Всего: нет



Coocky спасибо за помощь
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0895 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.