Библиотека STL (Standart Template Library)


STL - Standart Template Library. Стандартная библиотека шаблонов. Эта библиотека представляет большой набор данных структур и алгоритмов. Кстати она разработана, что очень приятно Александром Степановым и Менг Ли работающих в Hewlett-Packard Lab, им помогал Д. Л. Муссер из Ренсселэровского политехнического института. STL - это не просто расширение, недавно он был принят комитетом по стантартизации ANSI/ISO в качестве составляющей стандартной библиотеки C++. STL поддерживает как компилятор Borland, для которого его реализовала Rogue Wave Software так и Microsoft. У STL есть несколько версий. Мы с Вами посмотрим стандартную версию для VC++ Microsoft естественно. В чем же главная идея STL ?. Это уменьшение зависимости от стандартных библиотек С++. Главная беда стандартных библиотек это очень тесная их связь с данными, что делает их очень неудобными для работы с типами данных пользователя. STL позволяет работать с любыми типами данных и производить над ними операции.

Первое главное отличие STL это то, что она отделяет структуры данных от алгоритмов, которые с ними работают. Вторая главная особенность в том, что она не объектно-ориентированная. Это может выглядеть как недостаток, но это наверно не так. Она работает немного на другом уровне. На самом деле объектно-ориентированное программирование это только миф созданный Вашим компилятором. Я совершенно точно гарантирую, что способен написать код, который будет получать доступ к защищеным данным класса откуда угодно. Правда для этого нужно делать вставку на ассемблере. Кроме того код у неё очень компактен.

Пробуем

Сейчас мы с вами с помощью STL решим задачу безразмерного массива целых чисел. Это просто если делать с помощью STL.

Создаем проект Win 32 Console с именем StlStep2 как Hello Word. И пишем код.

// StlStep2.cpp : Defines the entry point for the console application.

#include "stdafx.h"
#include "vector"
#include "iostream.h"


using namespace std;

void main()
{
vector< int > MyArray;

for (int x=0;x < 10;x++)
MyArray.push_back(x);

vector< int >::iterator i;

for (i=MyArray.begin(); i!=MyArray.end();++i)
cout << *i << endl;
}

Ну как ? Много нового? Все новое. Вместе с VC++ поставляються и все необходимые файлы для работы с STL при этом есть некоторые особенности, например, Вы заметили, что при объявлении vector не использовалось расширение *.h. Его можно не использовать, но кроме того его и нет. Данный файл идет без расширения.

Данный пример это просто проба. Для использования STL нам нужно получить некоторые знания, в том числе и теоритические. Вот дальше мы и будет изучать.

Если вы программировали на чистом C и решали подобные задачи, то можете представить какой код нужно написать для подобной задачи. Явно больше.

 

 
« Предыдущая статья   Следующая статья »