Класс tList
Класс TList — универсальный список. Чтобы с ним работать, надо подключать модуль classes. Он представляет собой массив нетипизированных указателей и поэтому годится для хранения набора любых, в том числе разнотипных, данных и объектов. При добавлении/удалении в список данные не создаются и не уничтожаются — эта обязанность лежит на программисте. Приведем доступные ему методы и свойства класса:
property Items[Index: Integer]: Pointer; |
Возвращает указатель на содержимое элемента списка с индексом Index. Это свойство является векторным свойством, принимаемым по умолчанию, и его имя можно при записи опускать (см. раздел "Свойства"). |
property Count: Integer; |
Определяет число элементов в списке. |
property Capacity: Integer; |
Определяет максимальное число элементов в списке. Оно может изменяться как явно — пользователем, так и при добавлении элементов в список, в том случае, когда Count>=Capacity. Максимальная емкость списка — 16380 элементов. |
Управляют списком следующие методы:
function Add(Item: Pointer): Integer; |
Добавляет в конец списка элемент, который будет равен Item (т. е. указывать на те же данные). |
function Remove(Item: Pointer): Integer; |
Удаляет из списка элемент, который равен Item. |
procedure Insert(Index: Integer; Item: Pointer) ; |
Вставляет элемент, равный Item, перед элементом с индексом Index. |
procedure Delete(Index: Integer); |
Удаляет из списка элемент с индексом Index. |
procedure Clear; |
Очищает список, устанавливая величины Count и Capacity в 0. |
procedure Exchange(Indexl, Index2: Integer); |
Меняет местами элементы списка с индексами Indexl и Index2. |
function Expand: TList; |
При соблюдении равенства Count=Capacity расширяет список. При емкости списка менее пяти элементов, он по умолчанию расширяется на четыре элемента, при пяти-восьми — на восемь, более восьми — на шестнадцать. |
function First: Pointer; function Last: Pointer; |
Возвращают значения первого п последнего (с индексом Count-1) элементов списка соответственно. |
function IndexOf(Item: Pointer): Integer; |
Возвращает индекс элемента, равного Item. |
procedure Move(CurIndex, Newlndex: Integer) ; |
Перемещает элемент списка с положения Curlndex в положение Newlndex. |
procedure Pack; |
Упаковывает список, сдвигая элементы к началу на пустующие места. |
VECTOR
Для создания вектора вам необходимо подключить <vector>. Затем создание вектора почти ничем не отличается от создания переменной и/или массива:
vector <type> name; //здесь type- тип данных в векторе, а name - имя вектора
Для записи в вектор достаточно набрать имя вектора.push_back(что положить)
vector <int> test;
test.push_back(10);
test.push_back(20);
Обращение к n-ому элементу ничем не отличается от обращения к элементу массива:
test[0]++;
cout<<test[1];
test[1]=222;
Для удаления последнего элемента вектора используется функция pop_back()
test.pop_back();
Еще немного полезных функций:
test.at(i) - равносильно записи test[i], но при этом, если i-ого элемента не существует, программа не вылетит:)
test.assign(n,m) - записывает в массив n элементов со значением m
test.assign(start,end) - записывает в вектор значения от start до end.Внимание!!! start и end - интераторы (указатели) на элементы другого вектора.
test.front() - возвращает ссылку на первый элемент
test.back() - возвращает ссылку на последний элемент
test.begin() - возвращает интератор первого элемента вектора
test.end() - последнего + 1
test.clear() - очищает вектор
test.erase(i) или test.erase(start,end) - удаляет элемент с итератором i или элементы с итераторами между start и end
test.size() - возвращает количество элементов в векторе
test.swap(test2) - меняет местами содержимое вектора test и вектора test2
test.insert(a,b) - вставляет в test переменную b перед элементом с итератором a и возвращает итератор вставленного элемента
test.insert(a,n,b) - вставляет n копий b
test.insert(a,start,end) - вставляет элементы между итераторами start и end перед a
test.sort(start,end) –сортировка всех элементов вектора между итераторами start и end. Надо подключить <algorithm.h>.