Это определение не полно и не полностью соответствует стандарту, но оно хорошо иллюстрирует основную идею. Кроме того, оно позволяет использовать класс array
, если его нет в вашей стандартной библиотеке. Если же он есть, то искать его следует в заголовке
. Обратите внимание на то, что поскольку объекту класса array
известен его размер N
, мы можем (и должны) предусмотреть операторы =
, ==
, !=
как для класса vector
.
Например, используем массив со стандартной функцией high()
из раздела 20.4.2:
void f()
{
array
array
cout << " максимальное значение " << *p << endl;
}
Обратите внимание на то, что мы не думали о классе array
, когда писали функцию high()
. Возможность применять функцию high()
к объекту класса array
является простым следствием того, что в обоих случаях мы придерживались стандартных соглашений.
20.10. Обзор контейнеров
В библиотеке STL есть несколько контейнеров.
Огромный массив дополнительной информации об этих контейнерах и их использовании можно найти в книгах и документации, размещенной в Интернете. Перечислим несколько источников, заслуживающих доверия.
Austern, Matt, ed. “Technical Report on C++ Standard Library Extensions,” ISO/IEC PDTR 19768. (Colloquially known as TR1.)
Austern, Matthew H.
Lippman, Stanley B., Josée Lajoie, and Barbara E. Moo. The C++ Primer. AddisonWesley, 2005. ISBN 0201721481. (Use only the 4th edition.)
Musser, David R., Gillmer J. Derge, and Atul Saini.
Stroustrup, Bjarne.
Документацию о реализации библиотеки STL и библиотеки потоков ввода-вывода компании SGI (Silicon Graphics International) можно найти на веб-странице www.sgi.com/tech/stl>. Обратите внимание, что на этой веб-странице приводятся законченные программы.
Документацию о реализации библиотеки STL компании Dinkumware можно найти на веб-странице www.dinkumware.com/manuals/default.aspx. (Имейте в виду, что существует несколько версий этой библиотеки.)
Документацию о реализации библиотеки STL компании Rogue Wave можно найти на веб-странице www2.roguewave.com/support/docs/index.cfm.
С другой стороны, вы обнаружите, что, освоив классы vector
, list
и map
, а также стандартные алгоритмы, описанные в главе 21, вы легко научитесь работать с остальными контейнерами из библиотеки STL. Вы обнаружите также, что знаете все, что требуется для работы с нестандартными контейнерами, и сможете их программировать сами.
• Представляет собой последовательность элементов [begin():end()]
.
• Операции над контейнером копируют элементы. Копирование можно выполнить с помощью присваивания или конструктора копирования.
• Тип элементов называется value_type
.