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

polevoy_cpp_2012_spring_lecture_12

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

Адаптирующие итераторы

insert_iterator

back_insert_iterator

front_insert_itarator

28.04.2012

cppNewb.ru

71

std::back_insert (адаптирующий итератора)

вставка элементов в конец контейнера для алгоритмов переписывающих значения (например, copy)

контейнер должен обеспечивать push_back

вызов operator= приводит к вставке, остальные операции ничего не меняют

28.04.2012

cppNewb.ru

72

std::back_inserter (производящая функция)

template <class Cont>

back_insert_iterator<Cont>

back_inserter(Cont& x)

28.04.2012

cppNewb.ru

73

Конструирование алгоритмов

как « склеить» две последовательности?

скопировать одну в конец второй

пример:

list<int>::iterator it(firList.begin());

advance (it, 3);

insert_iterator<list<int> >

insertIt(firList, it);

copy(secList.begin(),secList.end(),

insertIt);

28.04.2012

cppNewb.ru

74

Операции над итераторами

advance

смещение итератора

difference

расстояние между итераторами

28.04.2012

cppNewb.ru

75

Рекомендации

избегайте повторного написания алгоритмов

конструируйте алгоритмы

помните о копировании объектов

читайте книги и практикуйте 8)

28.04.2012

cppNewb.ru

76

Агде в stl стек или очередь?

адаптер

класс преобразующий интерфейс объекта к нужному интерфейсу

в stl – шаблонный класс

адаптеры контейнеров

std::stack

std::queue

std::prioriy_queue

28.04.2012

cppNewb.ru

77

std::stack (адаптер)

template<class T,

class Cont = deque<T> >

class stack;

bool empty() const size_t size() const

value_type& top() // const

void push(const T&) void pop()

28.04.2012

cppNewb.ru

78

std::queue (адаптер)

template<class T,

class Cont = deque<T> >

class queue;

bool empty() const size_t size() const

value_type& front() value_type& back() const

void push(const T&) void pop()

28.04.2012

cppNewb.ru

79

std::priority_queue (адаптер)

template<class T,

class Cont = vector<T>,

class Cmp = less<typename Cont::value_type>

>

class priority_queue;

bool empty() const size_t size() const

value_type& top() // const

void push(const T&) void pop()

28.04.2012

cppNewb.ru

80

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