Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VC_Lect.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
15 Мб
Скачать
☆

Параметры

searchValue

Искомое значение.

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

Позиция элемента или NULL..

Замечания

При поиске элемента сравниваются значения типа ARG_TYPE, которые могут оказаться и указателями, в зависимости от объявления класса. Например, в следующем фрагменте программы будет найдено и выведено вещественное значение 50., если оно есть в списке:

CList <double,double&> Vec;

double Val;

// заполнение списка вещественными числами

Val=50.;

POSITION pos=Vec.Find(Val);

if (pos) cout<<Vec.GetAt(pos)<<endl;

Функция FindIndex()

Последовательно просматривает список для нахождения элемента с последовательным номером nIndex (начинающимся с нуля) и возвращает его позицию – значение типа POSITION.

POSITION FindIndex( int nIndex ) const;

Параметры

nIndex

Искомый номер элемента списка.

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

Позиция элемента или NULL..

Пример программы:

CList <int,int&> list;

POSITION pos;

for(int i=0;i<5;i++)

{

int work=i*10;

list.AddTail(work);

}

pos=list.FindIndex(3);

if(pos) cout<<'\n'<<list.GetAt(pos)<<endl; // выводит 30

Отметим, что, казалось бы, оператор list.AddTail(i*10); тоже можно было бы написать. Однако, такой оператор вызовет сообщение компилятора об ошибке. В чем же проблема? Да в том, что второй параметр шаблона списка мы объявили ссылкой (первая строка фрагмента программы) и, следовательно, фактический параметр функции AddTail() должен быть обязательно переменной, а не выражением.

Функция GetCount()

Возвращает количество элементов списка.

int GetCount() const;

Функция IsEmpty()

Возвращает значение TRUE, если список пустой.

BOOL IsEmpty( ) const;

 

20.3.4.Использование простых ассоциативных массивов

Шаблонный класс ассоциативный массив CMap имеет четыре параметра: KEY, ARG_KEY, VALUE и ARG_VALUE. Подобно массивам CArray и спискам CList, этот массив может сохранять данные любого типа. Однако, в отличие от массивов и списков, которые оперируют индексами и их элементы являются упорядоченными, ассоциативные массивы оперируют ключами и значениями: Вы можете получить доступ к элементу массива только по его уникальному ключу. Параметр KEY определяет тип данных, которые используются в качестве ключа. Если типом KEY является структура или класс, то в качестве ARG_KEY обычно указывают ссылку на KEY. В свою очередь параметр шаблона VALUE специфицирует тип данных, хранящихся в массиве. Если этот тип структура или класс, то в качестве ARG_ VALUE обычно указывают ссылку на VALUE. Например:

CMap< int, int, MY_STRUCT, MY_STRUCT& > myMap1;

CMap< CString, LPCSTR, CPerson, CPerson& > myMap2;

Массив myMap2 может представлять собой простую адресную книгу, в которой Вы получаете сведения о личности по ее фамилии.

Поскольку параметр KEY имеет тип CString и параметр KEY_TYPE – тип LPCSTR, ключи сохраняются в массиве как объекты типа CString, однако ссылки на них в функциях, таких как SetAt(), должны быть указателями типа LPCSTR. Например:

CMap< CString, LPCSTR, CPerson, CPerson& > myMap2;

CPerson person;

// …

LPCSTR lpstrName = "Jones";

myMap2->SetAt(lpstrName, person);

20.4.Использование шаблонов коллекций типизированных указателей

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]