
- •10. Конструктором
- •24.Контейнерні класи.
- •Ітератор бібліотеці(iterator)
- •Категорійітераторів
- •Ітераторипримітивів
- •26. Контейнерів - векторі (vector)
- •2. Static_cast (перетворення без перевірки)
- •3. Const_cast (відкидання const або volatile)
- •33. Обробка виключних ситуацій
- •34. Обробка виключних ситуацій
Ітератор бібліотеці(iterator)
Ітератор бібліотеці
Ітератор бібліотеки містить визначення п'яти видів ітератори, а також ітератор риси, адаптери та функції корисності.
Категорійітераторів
Існуютьп'ятьвидів ітераторів: InputIterator , OutputIterator , ForwardIterator , BidirectionalIteratorі RandomAccessIterator .
Замість того, щобвизначитиконкретнітипи, кожнакатегоріяітераторавизначаєтьсяоперацій, якіможнавиконувати на ньому. Цевизначенняозначає, щобудь-якийтип, якийпідтримуєнеобхідніопераціїможнавикористовувати в якостіітератора, - наприклад, покажчикпідтримуєвсіоперації, необхідніRandomAccessIterator , такщопокажчикможебутивикористаний в будь-якому RandomAccessIterator неочікується.
Чотири з п'ятикатегорійітераторівможутьбутиорганізовані в ієрархії, дебільшпотужніітераторикатегорій (наприклад RandomAccessIterator ) підтримуватидіяльністьменшпотужноюкатегорії (наприкладInputIterator ). Якщоітераторпотрапляє в одну з цихкатегорій, а такожзадовольняєвимогамOutputIterator , товінназивається змінним ітератора і підтримує як вхід і вихід. Номеридлязмінюванихітераториназиваються постійними ітератори.
Категорії ітератора |
Певних операцій |
|||
RandomAccessIterator |
BidirectionalIterator |
ForwardIterator |
InputIterator |
|
|
|
|||
|
|
|||
|
|
|||
Ітератори, які відносяться до однієї з перерахованих вище категорій, а також відповідають вимогамOutputIterator називаються змінювані ітератори. |
||||
OutputIterator |
|
|
Ітераторипримітивів
|
|
iterator_traits |
надає єдиний інтерфейс до властивостей ітератор (Шаблон класу) |
|
|
input_iterator_tag output_iterator_tag forward_iterator_tag bidirectional_iterator_tag random_access_iterator_tag |
порожні типів класів використовується для позначення категорій ітераторів (Клас) |
|
|
Ітератор |
основні ітератор (Шаблон класу) |
Розподільник за замовчуванням(allocator)
Розподільники є класи, які визначають моделі пам'яті, які будуть використовуватися деякі частини стандартної бібліотеки, а більш конкретно, по STL контейнерів . У цьому розділі описується шаблон за замовчуванням розподільник розподільник (у нижньому регістрі). Це розподільник, що всі стандартні контейнери будуть використовувати, якщо їх останній (і додатковий) шаблону параметр не вказаний, і є єдиною зумовленою розподільник в стандартній бібліотеці.std::allocator шаблону класу за замовчуванням Allocator використовується всіма стандартними контейнерами бібліотеки, якщо не вказане користувачем розподільник не надається. Розподільник за замовчуванням є особою без громадянства, тобто, всі екземпляри даного розподільника є взаємозамінними, порівняйте рівні і може звільняти пам'ять, виділену будь-який інший примірник того ж типу розподільника.