C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 100 - Коллекции в MFC / MFC шаг за шагом / Visual C++

Шаг 100 - Коллекции в MFC

В MFC есть три коллекции - это массивы CArray, списки CList и словари CMap. Кроме того, классы делят на созданные с помошью шаблонов или без них. Конечно на данный момент стандарт C++ требует использования шаблонов. Все коллекции порождены от CObject

Массив - упорядоченный набор объектов, каждому из которых соответствует индекс.

Список - упорядоченный неиндексированный набор элементов с виде связанного списка. В спиcке доступ может быть к первому, последнему и текущему элементу, для остальных необходимо производить поиск. Поиск проводится по указателю на последний и предыдущий элемент списка, который хранится в каждом элементе в виде указателя. Удобна для быстрого дополнения элементов.

Словарь - для доступа импользуется ключевое поле.

Есть коллекции объектов и коллекции указателей. При использовании колекции имя меняется путем добавления вставки TypedPrt, например, для CArray это CTypedPtrArray. И так далее.

Для выбора конкретной коллекции нужно учесть кучу параметров, вот некоторые логические

 УпорядоченностьИндексируемостьСкорость вставкиПоиск
СписокДаНетБыстроМедленно
МассивДаДаМедленноБыстро
СловарьДаДаБыстроБыстро

Анализ этой таблицы показывает, что не всё коту масленница. Если хотим иметь всё, то нужен словарь. Но это не всегда удобно, а дальше выбор простой, что нужно быстро искать или быстро вставлять :-))). Так что Выбор за Вами. Вот еще некоторые параметры для размышления

 Шаблоны С++Работа с архивомВстроеная диагностикаПроверка типа
МассивДаДаДаНет
СписокДаДаДаНет
СловарьДаДаДаНет

Вы скажете "Ну и что здесь такого? Они же одинаковые". Конечно, но у каждой коллекции есть специализированные разновидности на определенный тип данных. Например, для CArray

CArray
	CByteArray
	CDWordArray
	CObArray
	CPtrArray
	CStringArray
	CTypedPtrArray
	CUintArray
	CWordArray

И вот тут-то всё и начинается. Например, с архивом не может работать CPtrArray, а CByteArray может проверять типы :-))) Поэтому при выборе обязательно проверьте, а умеет ли Ваш контейнер делать то, что вы скажете ?.

Объявления коллекций находятся в заголовочном файле

#include "afxtempl.h"

| |
Автор Каев Артем.
[AD]