**Определение 1**. _Однородный_ контейнер – это такой контейнер, в котором хранятся объекты строго одного типа.
**Определение 2**. _Неоднородный_ контейнер — это такой контейнер, в котором могут храниться объекты разного типа.
**Определение 3**. _Статический_ контейнер — это контейнер, состав которого полностью определяется на этапе компиляции.
> Под _составом_ в данном случае понимается количество элементов и их типы, но не сами значения этих элементов. Действительно, бывают контейнеры, у которых даже значения элементов определяются на этапе компиляции, но в данной модели такие контейнеры не рассматриваются.
**Определение 4**. _Динамический_ контейнер — это контейнер, состав которого частично или полностью определяется на этапе выполнения.
По такой классификации, очевидно, существуют четыре вида контейнеров:
1. Статические однородные
**Сможете придумать пример?**
Обычный массив — `int[n]`.
2. Статические неоднородные
**Примеры?**
Наиболее яркий пример такого контейнера — это кортеж. В языке C++ он реализуется классом `std::tuple`.
3. Динамические однородные
**Догадались?**
Правильно, `std::vector`.
4. Динамические неоднородные
Вот об этом виде контейнеров и пойдёт речь в данной статье.
[Читать дальше →][1]
[1]:
https://habrahabr.ru/post/302372/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut