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

Int main(){

Array a(20);

Array::iterator iter;

For (iter = a.begin(); iter!=a.end;++iter) {cout << *iter<< endl;}

В stl метод end() контейнера возвращает итератор несуществующего элемента (того, что после последнего).

Для динамических массивов vector<> есть итераторы произвольного доступа. Им разрешены операции инкремента (++), которые возвращают итератор следующего элемента контейнера и декремента (--) для предыдущего.

Определен итератор, не связанный с элементами контейнера (“итератор несуществующего элемента”). Он относится к элементу после последнего.

Операции ++ и – относятся к итераторам, а не контейнерам.

Операция * разадресации возвращает элемент контейнера, связанный с итератором. Для итераторов произвольного доступа операция индексирования [] – возвращает ссылку на i-й элемент.

Для списков – контейнер list<> определены двунаправленные итераторы.

Iterator:

Разрешено:

++, --, ==, !=, *, =

Не разрешено: []

Однонаправленные итераторы:

ForwardIterator

Разрешено:

++, =, ==, !=, *

<iterator>

Istream_iterator<>

Ostream_iterator<>

Reverse_iterator

Тоже бывают произвольного доступа, одно- и двунаправленные, но работают от конца к началу.

Базовые последовательности

Vector<> <- итераторы произвольного доступа.

List<> <- двунаправленные итераторы.

Deque<> <- итераторы произвольного доступа.

Для последовательностей определены операции:

= присвоение

==, != - для содержимого.

<, <=< >, => - для размеров.

Предыдущие два пункта вместе взятые – сравнения.

Вызов итератора

Vector<int>::iterator iter1;

List<int>::iterator iter2;

Методы:

Iterator begin(); - возвращает итератор первого элемента.

Iterator end(); - возвращает итератор несуществующего элемента, следующего за последним.

Reverce_iterator rbegin(); - возвращает обратны итератор на последний элемент контейнера.

Reverce_iterator rend(); - возвращает обратный итератор на элемент, предшествующий первому.

Size_t

Unsigned size(); - количество элементов в контейнере.

Unsigned max_size(); - максимальное количество, которое можно поместить в контейнер.

Bool empty(); - возвращает true, если контейнер пуст.

Vector<T>

Reference -> T f //ссылка на элемент контейнера. Имя, объявленное в каждом итераторе.

Reference front(); - ссылка на первый элемент.

Reference back(); - ссылка на последний элемент.

Void push_back (int value_type); - добавляет новый элемент в конец контейнера.

Value_type -> T // тип элементов, хранящихся в контейнере.

Void pop_back(); - удаляет последний элемент последовательности.

Void assign(); - перегруженный метод. Задает значение для всех элементов.

Iterator insert(); - тоже перегружен. Можно им вставить 1 или несколько элементов в контейнер.

Аргумент – итератор элемента, перед которым производится вставка, а далее или значение, или два итератора – диапазон элементов, вставляемых в контейнер (из другого контейнера, например).

Iterator erace(); - позволяет удалять элементы из последовательности. Если аргумент – 1 итератор, то удаляется он. Если 2 итератора, то диапазон.

Void clear(); - удаляет все элементы из контейнера.

Пример:

Добавление 10 целых значений в динамический массив и вывод их значений на консоль в прямом и обратном порядке (с использованием итераторов).

#include <iostream>

#include <vactor>

Using namespace std;