Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

polevoy_cpp_2012_spring_lecture_10

.pdf
Скачиваний:
3
Добавлен:
20.04.2015
Размер:
143.2 Кб
Скачать

Однонаправленный Итератор

допускает написание однопроходного алгоритма

operator++()

возможно существование более одного итератора для интервала

14.04.2012

cppNewb.ru

21

Итератор Вывода

однопроходное чтение (извлечение) элементов

не изменяет элементы

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

по диапазону нельзя пройти более одного раза

operator++()

14.04.2012

cppNewb.ru

22

Итератор Ввода

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

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

по диапазону нельзя пройти более одного

раза

не сравниваются (конец задан неявно)

operator++()

пример:

*iV = x;

14.04.2012

cppNewb.ru

23

Пример алгоритма (copy)

template<class InpI, class OutI>

OI copy(InpI first, InpI last, OutI res)

{

for (; first != last; ++res, ++first)

{

*res = *first;

}

return res;

}

14.04.2012

cppNewb.ru

24

Классы итераторов в STL

iterator и const_iterator

являются вложенными классами для классов контейнеров

пример:

list<int>::iterator

list<int>::const_iterator

14.04.2012

cppNewb.ru

25

Интервал элементов контейнера

begin()

первый элемент (начало)

end()

элемент, следующий за последним (конец)

пример:

vector<int> ms;

vector<int>::iterator i(ms.begin());

14.04.2012

cppNewb.ru

26

Пример поиска

// C data;

C::iterator it(dt.end());

it = find(dt.begin(), dt.end(), k); if (dt.end() != it)

// найден элемент со значением k

{

...

}

14.04.2012

cppNewb.ru

27

Контейнеры переменного размера

Последовательность (Sequence)

Ассоциативный Контейнер

(Associative Container)

14.04.2012

cppNewb.ru

28

Вставка элемента

в конец

push_back

в начало

push_front

в произвольной позиции

insert

14.04.2012

cppNewb.ru

29

Удаление элемента

• из конца

pop_back()

• из начала

pop_front()

• из произвольной позиции

remove()

14.04.2012

cppNewb.ru

30

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