Уроки Коммент.

Создание игр » Featured, STL » STL: Standard Template Library

STL: Standard Template Library

STL (Standard Template Library)Сегодня я хочу рассказать вам о STL (Standard Template Library) – стандартной библиотеке шаблонов языка C++. Изначально STL была сторонней разработкой, которая разрабатывалась сначала HP, а потом SGI. Позже STL стала неотъемлемой частью языка, каковой и является до сих пор, постоянно развиваясь и расширяясь. STL представляет из себя набор обобщённых шаблонов С++, включающий в себя контейнеры, алгоритмы и итераторы. Кроме того, STL содержит в себе наиболее часто используемые алгоритмы и структуры данных, что облегает программирование с её использованием. Иными словами STL (Standard Template Library) это набор шаблонов, который существенно облегчает, упрощает и ускоряет программирование повседневных задач.

Зачем STL

Зачем же использовать STL при создании игр? Ответ содержится в последнем предложении предыдущего абзаца: STL существенно облегчает, упрощает и ускоряет программирование, в том числе и игр. Я немного позже покажу, как именно STL ускоряет процесс создания и отладки программы. Пока же поговорим о том, из чего конкретно состоит эта стандартная библиотека шаблонов.

Компоненты STL

Обычно в Standard Template Library выделяют 5 основных компонентов:

  1. Контейнер (container) – “массив”, обеспечивающий хранение (набора) объектов в памяти.
  2. Итератор (iterator) – это средство доступа к содержимому контейнера. (см. Урок STL: итераторы)
  3. Алгоритм (algorithm) – процедура, выполняющая какие-то действия над элементами контейнера.(см. Урок о алгоритмах STL)
  4. Адаптер (adaptor) – набор шаблонов для обеспечения различного интерфейса (например, интерфейс ввода/вывода)
  5. Функциональный объект (functor) — объект, скрывающий в себе функцию, для того, что бы её могли использовать другие компоненты STL.

Все шаблоны STL находятся в нэймспейсе std:: (от STandarD), потому для их использования либо надо использовать их как std::имя_шаблона (например std::string) или в начале программы написать using namespace std.

Наиболее часто используются следующие шаблоны-контейнеры STL:

  • std::vector – динамический массив с произвольным (т.е. не обязательно по порядку) доступом к элементам и с автоматическим изменением размера массива при добавлении/удалении элементов. (см. Урок про std::vector)
  • std::map – упорядоченный ассоциативный массив (пар) элементов. Каждая пара состоит из ключа и значения (например, ID игрового перса + сам объект перса). Ключи обязательно должны быть уникальны – за этим следит сам std::map. Порядок следования элементов (при их последовательном переборе) определяется ключами, т.к. массив хранится отсортированным по ключам.
  • std::queue – массив-очередь. Это контейнер, в который элементы добавляются с одной стороны(с конца), а извлекаются с другой стороны (с начала).
  • std::priority_queue – тоже массив-очередь. Но, в отличие от обычной очереди, каждому элементу массива задаётся “приоритет” и извлекать из массива всегда можно только самый “приоритетный” элемент.
  • std::stack – классический стэк из элементов. Добавление и извлечение элементов происходит с одного конца (последний добавленный элемент будет извлекаться первым).

Использование STL

Использовать шаблоны STL очень просто, например:

using namespace std;
void main(void)
{
	std::vector<int> massiv; // массив целых чисел
 
	massiv.push_back(10); // добавить в массив число 10
	massiv.push_back(1); // добавить в массив число 1
	massiv.push_back(99); // добавить в массив число 99
 
	 // извлекаем из массива последний элемент
	int iLastNumber = massiv.pop_back(); // при этом он удалится из массива
 
	size_t iMassivSize = massiv.size(); // получаем текущий размер массива
 
	massiv.clear(); // очистить массив (удалить все элементы)
} // тут массив сам удалится и больше не будет использовать память

Попробуйте сделать то же самое без STL )))

Узнать об STL


Узнать больше об STL вы можете в MSDN, либо на сайте STLPort.

В следующих уроках по STL я расскажу про STL и её использование более подробно. А этот урок подошёл к концу, спасибо за внимание.

»crosslinked«

Ещё по этой теме:




Раздел: Featured, STL · Теги: STL

Оставить комментарий

*

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>