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

Операции

TYPE& operator []( int nIndex );

TYPE operator []( int nIndex ) const;

Получает или устанавливает значение элемента массива с номером nIndex. Эта операция является удобным заменителем функций SetAt() и GetAt(). В отладочной версии программы возникает ошибка (failed assert) при попытке при попытке обращения к несуществующему элементу массива.

20.3.3.Члены класса cList

Замечание ко всем функциям списка. Тип POSITION не является номером элемента в списке или его индексом и Вы не должны пытаться его модифицировать как обычную переменную. Получайте значение позиции элемента с помощью функций GetHeadPosition(), GetTailPosition(), Find() или FindIndex().

Конструктор

CList

Создает объект список

Доступ к голове и хвосту

GetHead

Возвращает головной элемент непустого списка

GetTail

Возвращает хвостовой элемент непустого списка

Обработка

RemoveHead

Удаляет элемент из головы списка

RemoveTail

Удаляет элемент из хвоста списка

AddHead

Добавляет элемент или все элементы другого списка в голову данного

AddTail

Добавляет элемент или все элементы другого списка в хвост данного

RemoveAll

Удаляет все элементы списка

Итерации

GetHeadPosition

Возвращает позицию головного элемента списка

GetTailPosition

Возвращает позицию хвостового элемента списка

GetNext

Возвращает следующий элемент для итерации

GetPrev

Возвращает предыдущий элемент для итерации

Получение и модификация элементов

GetAt

Возвращает значение элемента в данной позиции

SetAt

Изменяет значение элемента в данной позиции

RemoveAt

Удаляет элемент с заданной позицией

Вставки

InsertBefore

Вставляет новый элемент перед данной позицией

InsertAfter

Вставляет новый элемент после данной позицией

Поиск

Find

Возвращает позицию элемента по значению указателя

FindIndex

Возвращает позицию элемента, заданную индексом, начинающимся с нуля

Атрибуты

GetCount

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

IsEmpty

Возвращает состояние списка (пустой или нет)

Конструктор

CList( int nBlockSize = 10 );

Создает пустой список. Параметр nBlockSize задает гранулярность списка, т.е. число элементов списка, на которое он будет увеличиваться при расширении.

Функция GetHead()

Возвращает головной элемент или ссылку на него.

TYPE& GetHead( );

TYPE GetHead( ) const;

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

Если список неконстантный, то возвращаемая функцией ссылка может быть использована в левой части оператора присваивания.

Замечания

Функция должна вызываться для непустого списка.

Функция GetTail()

Возвращает хвостовой элемент или ссылку на него.

TYPE& GetTail( );

TYPE GetTail() const;

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

Если список неконстантный, то возвращаемая функцией ссылка может быть использована в левой части оператора присваивания.

Замечания

Функция должна вызываться для непустого списка.

Функция RemoveHead()

Удаляет головной элемент и возвращает его значение или ссылку на него.

TYPE RemoveHead();

Пример:

CList <double, double> list;

double dbl;

list.AddTail(1.1);

list.AddTail(2.2);

dbl=list.RemoveHead();

cout<<"list.RemoveHead() "<<dbl<<endl; // выводит 1.1

CList <double, double&> listref;

dbl=1.1;

listref.AddTail(dbl);

dbl=2.2;

listref.AddTail(dbl);

listref.GetHead()=0.1;

dbl=listref.RemoveHead();

cout<<"listref.RemoveHead() "<<dbl<<endl; // выводит 0.1

Функция RemoveTail()

Удаляет хвостовой элемент и возвращает его значение или ссылку на него.

TYPE RemoveTail();

Замечания

Эта функция подобна RemoveHead() – см. пример для нее.

Функция AddHead()

Добавляет элемент или все элементы другого списка в голову данного.

POSITION AddHead( ARG_TYPE newElement );

void AddHead(CList* pNewList);

Параметры

newElement

Значение нового элемента списка.

pNewList

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

Функция AddTail()

Добавляет элемент или все элементы другого списка в голову данного.

POSITION AddTail(ARG_TYPE newElement );

void AddTail(CList* pNewList);

Параметры

newElement

Значение нового элемента списка.

pNewList

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

Функция RemoveAll()

Удаляет все элементы списка и освобождает выделенную для него память. Список может быть пустым.

void RemoveAll();

Функция GetHeadPosition()

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

POSITION GetHeadPosition() const;

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

Возвращаемое значение может быть использовано для итераций или поиска указателя. Функция возвращает NULL для пустого списка.

Функция GetTailPosition()

Возвращает позицию хвостового элемента списка.

POSITION GetTailPosition() const;

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

Возвращаемое значение может быть использовано для итераций или поиска указателя. Функция возвращает NULL для пустого списка.

Функция GetNext()

Возвращает значение элемента с указанной позицией и модифицирует позицию так, чтобы она указывала на следующий элемент списка.

TYPE & GetNext( POSITION & rPosition );

TYPE GetNext( POSITION & rPosition ) const;

Параметр

rPosition

Ссылка на позицию, возвращенная предыдущим вызовом этой функции или какой-либо другой.

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

Значение элемента с указанной позицией или ссылку на него.

Замечания

Эту функцию можно использовать в цикле, получив первоначальное значение позиции с помощью GetHeadPosition() или Find(). Если полученный элемент является последним в списке, то rPosition==NULL, что и нужно проверять во избежание ошибки.

Функция GetPrev()

Возвращает значение элемента с указанной позицией и модифицирует позицию так, чтобы она указывала на предыдущий элемент списка.

TYPE & GetPrev ( POSITION & rPosition );

TYPE GetPrev ( POSITION & rPosition ) const;

Данная функция подобна GetNext(), описание которой приведено выше.

Иллюстрация функций, предназначенных для выполнения итераций (проект AlgTest):

CList <int,int&>list;

POSITION pos;

for(int i=0;i<5;i++) list.AddTail(i);

pos=list.GetHeadPosition();

while(pos) cout<<list.GetNext(pos)<<' '; // выводит 0 1 2 3 4

cout<<endl;

pos=list.GetTailPosition();

while(pos) list.GetPrev(pos)*=2;

pos=list.GetHeadPosition();

while(pos) cout<<list.GetNext (pos)<<' '; // выводит 0 2 4 6 8

Функция GetAt()

Возвращает элемент с позицией position или ссылку на него.

TYPE & GetAt( POSITION position );

TYPE GetAt( POSITION position ) const;

Параметры

position

Позиция элемента списка, значение которого надо получить.

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

Значение элемента или ссылка на него.

Замечания

Убедитесь в том, что значение position корректно.

Функция SetAt()

Устанавливает новое значение newElement элемента списка с позицией pos.

void SetAt( POSITION pos, ARG_TYPE newElement);

Параметры

pos

Позиция элемента списка, значение которого надо установить.

Замечания

Убедитесь в том, что значение pos корректно.

Функция RemoveAt()

Удаляет элемент с заданной позицией pos.

void RemoveAt( POSITION pos);

Параметры

pos

Позиция элемента списка, значение которого надо удалить.

Замечания

Убедитесь в том, что значение pos корректно.

Функция InsertBefore()

Вставляет в список новый элемент со значением newElement в позицию перед заданной значением параметра position.

POSITION InsertBefore( POSITION position, ARG_TYPE newElement );

Параметры

position

Позиция элемента списка, перед котором надо вставить новый элемент.

newElement

Значение вставляемого элемента списка.

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

Позиция вставленного элемента списка, которая может быть использована в цикле.

Замечания

Убедитесь в том, что значение pos корректно.

Функция InsertAfter()

Вставляет в список новый элемент со значением newElement в позицию после заданной значением параметра position.

POSITION InsertAfter( POSITION position, ARG_TYPE newElement );

Функция подобна InsertBefore(), описанной выше.

Функция Find()

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

POSITION Find( ARG_TYPE searchValue, POSITION startAfter = NULL) const;

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