Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции С++.docx
Скачиваний:
4
Добавлен:
22.09.2019
Размер:
6.95 Mб
Скачать

Заголовочные файлы

  • совпадают с именем контейнера

<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

Объявление list<>

template

<class T,

class Allocator = allocator<T> > class list

14.04.2012 cppNewb.ru 51

Доступ к элементам list

  • через итератор

    • обобщенный вариант

  • с концов

  • элементы произвольное расположены в

памяти

14.04.2012 cppNewb.ru 52

  • size

Размеры list

    • число элементов

  • empty

    • проверка на пустоту

  • max_size

    • максимальное число элементов (системно)

  • resize

    • изменить число элементов

14.04.2012 cppNewb.ru 53

deque<>

  • блочно-списочная структура

  • произвольный доступ

  • быстрая вставка/удаление в конец

  • быстрая вставка/удаление в начало

  • изменение числа элементов делает итераторы невалидными

14.04.2012 cppNewb.ru 54

pair<>

  • хранение пары значений,

м.б. разного типа

  • сравнение пар

14.04.2012 cppNewb.ru 55

Определение pair<>

template<class T1, class T2> struct pair

{

typedef

T1

first_type;

typedef

T2

second_type;

T1 first; T2 second;

pair() : first(T1()), second(T2()) {} pair(const T1& x, const T2& y)

: first(x), second(y) {}

template <class U, class V> pair(const pair<U, V>&p)

: first(p.first), second(p.second) { }

};

14.04.2012 cppNewb.ru 56

  • <utility>

Сравнение pair<>

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

==, <, !=, >, >= и <=

  • (lhs == rhs)

означает

(lhs.first == rhs.first) && (lhs.second == rhs.second)

  • в сравнении на неравенство (<, >)

    • сравнивается first

    • если равны, то сравниваются second

14.04.2012 cppNewb.ru 57

map<>

  • бинарное дерево поиска

  • отображение key→value

  • итераторы валидны при вставке и удалении

    • кроме удаления текущего элемента

14.04.2012 cppNewb.ru 58

Объявление map<>

template<class Key, class T,

class

Compare =

less<Key>,

class

Allocator

=

allocator<pair<const Key,T> > >

class map

14.04.2012 cppNewb.ru 59