
лекции программирование / polevoy_cpp_2012_spring_lecture_10
.pdf
reverse_iterator
•класс-адаптер для iterator
•для [f, l) интервал
[reverse_iterator(l), reverse_iterator(f)) содержит
значения в обратном порядке
•основное тождество
&*(reverse_iterator(i)) == &*(i - 1)
&*r == &*(r.base() - 1)
14.04.2012 |
cppNewb.ru |
41 |

Заголовочные файлы
• совпадают с именем контейнера
<vector>
<list>
<deque>
<set> - в т.ч. multiset <map> - в т.ч. multimap
• вспомогательные
<utility>
<iterator>
14.04.2012 |
cppNewb.ru |
42 |

vector<>
•динамический массив
•произвольный доступ
•быстрая вставка/удаление в конец
•медленная вставка/удаление в начало
•изменение числа элементов делает итераторы невалидными
14.04.2012 |
cppNewb.ru |
43 |

Объявление vector
template <class T,
class Allocator = allocator<T> > class vector
vector<bool> - специализация
14.04.2012 |
cppNewb.ru |
44 |

Доступ к элементам vector
•через итератор
–обобщенный вариант
•по индексу
–замена встроенным массивам
•с концов
•последовательное расположение в памяти
14.04.2012 |
cppNewb.ru |
45 |

Доступ к элементам vector через итератор
•iterator begin()
–начало интервала
•iterator end()
–конец интервала
•reverse_iterator rbegin()
•reverse_iterator rend()
14.04.2012 |
cppNewb.ru |
46 |

Доступ к элементам vector (если контейнер const)
const_iterator begin () const
const_iterator end () const
14.04.2012 |
cppNewb.ru |
47 |

Заполнение массива
•template<class InpI> void
assign(InpI fst, InpI lst)
–скопировать диапазон
•void
assign(size_type n, const T& u)
–заполнить значениями u
14.04.2012 |
cppNewb.ru |
48 |

Очистка массива
•iterator erase(iterator pos)
–удалить элемент
•iterator
erase(iterator fst, iterator lst)
–удалить элемент или интервал
14.04.2012 |
cppNewb.ru |
49 |

list<>
•двусвязный список
•линейный доступ
•быстрая вставка и удаление в любой
позиции
•итераторы валидны при вставке и удалении
–кроме удаления текущего элемента
14.04.2012 |
cppNewb.ru |
50 |