Программирование. Принципы и практика использования C++ Исправленное издание, стр. 284
• Представляет собой последовательность элементов
[begin():end()]• Операции над контейнером копируют элементы. Копирование можно выполнить с помощью присваивания или конструктора копирования.
• Тип элементов называется
value_type• Контейнер содержит типы итераторов с именами
iteratorconst_iterator*++==!=list–vector––[]+-• Контейнеры имеют функции
insert()erase()front()back()push_back()pop_back()size()vectormap[]• Контейнеры обеспечивают операторы (
==!=<<=>>=<<=>>=• Цель этого списка — дать читателям некий обзор. Более детальная информация приведена в приложении Б. Более точная спецификация и полный список операций приведены в книге The C++ Programming Language или в стандарте.
Некоторые типы данных имеют многие свойства стандартных контейнеров, но не все. Мы иногда называем их “почти контейнерами”. Наиболее интересными среди них являются следующие.

Кроме того, многие люди и организации разрабатывают собственные контейнеры, удовлетворяющие или почти удовлетворяющие требованиям стандарта.
vectorvector20.10.1. Категории итераторов
Мы говорили об итераторах так, будто все они являются взаимозаменяемыми. Однако они эквивалентны только с точки зрения простейших операций, таких как перемещение по последовательности с однократным считыванием каждого элемента. Если вы хотите большего, например перемещаться в обратном направлении или обеспечить произвольный доступ, то вам нужны более совершенные итераторы.

Глядя на предусмотренные операции, легко убедиться в том, что вместо итераторов для записи или чтения можно использовать двунаправленный итератор. Кроме того, двунаправленный итератор также является однонаправленным, а итератор с произвольным доступом — двунаправленным. В графическом виде категории итераторов можно изобразить следующим образом:

Обратите внимание на то, что категории итераторов не являются классами. Это не иерархия классов, реализованных с помощью наследования.
Задание
1. Определите массив чисел типа
int2. Определите объект класса
vector<int>3. Определите объект класса
list<int>4. Определите второй массив, вектор и список, каждый из которых инициализируется первым массивом, вектором или списком соответственно.
5. Увеличьте значение каждого элемента в массиве на два; увеличьте значение каждого элемента в массиве на три; увеличьте значение каждого элемента в массиве на пять.
6. Напишите простую операцию
copy()template<class Iter1, class Iter2>Iter2 copy(Iter f1, Iter1 e1, Iter2 f2);копирующую последовательность
[f1,e1][f2,f2+(e1–f1)]f2+(e1–f1)f1==e17. Используйте вашу функцию
copy()8. Используйте стандартную библиотечную функцию
find()3find()27find()Контрольные вопросы
1. Почему программы, написанные разными людьми, выглядят по-разному? Приведите примеры.