Учебник C ++ STL

Надеюсь, вы уже поняли концепцию шаблона C ++, которую мы обсуждали ранее. C ++ STL (Стандартная библиотека шаблонов) - это мощный набор классов шаблонов C ++ для предоставления классов и функций общего назначения с шаблонами, реализующими множество популярных и часто используемых алгоритмов и структур данных, таких как векторы, списки, очереди и стеки.

В основе стандартной библиотеки шаблонов C ++ лежат три хорошо структурированных компонента:

Старший Нет Компонент и описание
1

Containers

Контейнеры используются для управления коллекциями объектов определенного типа. Есть несколько различных типов контейнеров, таких как deque, list, vector, map и т. Д.

2

Algorithms

Алгоритмы действуют на контейнеры. Они предоставляют средства, с помощью которых вы будете выполнять инициализацию, сортировку, поиск и преобразование содержимого контейнеров.

3

Iterators

Итераторы используются для пошагового перехода по элементам коллекций объектов. Эти коллекции могут быть контейнерами или подмножествами контейнеров.

Мы обсудим все три компонента C ++ STL в следующей главе при обсуждении стандартной библиотеки C ++. На данный момент имейте в виду, что все три компонента имеют богатый набор предопределенных функций, которые помогают нам очень легко выполнять сложные задачи.

Давайте возьмем следующую программу, которая демонстрирует векторный контейнер (стандартный шаблон C ++), который похож на массив, за исключением того, что он автоматически обрабатывает свои собственные требования к хранилищу в случае его роста:

#include <iostream>
#include <vector>
using namespace std;
 
int main() {

   // create a vector to store int
   vector<int> vec; 
   int i;

   // display the original size of vec
   cout << "vector size = " << vec.size() << endl;

   // push 5 values into the vector
   for(i = 0; i < 5; i++) {
      vec.push_back(i);
   }

   // display extended size of vec
   cout << "extended vector size = " << vec.size() << endl;

   // access 5 values from the vector
   for(i = 0; i < 5; i++) {
      cout << "value of vec [" << i << "] = " << vec[i] << endl;
   }

   // use iterator to access the values
   vector<int>::iterator v = vec.begin();
   while( v != vec.end()) {
      cout << "value of v = " << *v << endl;
      v++;
   }

   return 0;
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

vector size = 0
extended vector size = 5
value of vec [0] = 0
value of vec [1] = 1
value of vec [2] = 2
value of vec [3] = 3
value of vec [4] = 4
value of v = 0
value of v = 1
value of v = 2
value of v = 3
value of v = 4

Вот следующие моменты, которые следует отметить, связанные с различными функциями, которые мы использовали в приведенном выше примере:

  • Функция-член push_back () вставляет значение в конец вектора, увеличивая его размер по мере необходимости.

  • Функция size () отображает размер вектора.

  • Функция begin () возвращает итератор в начало вектора.

  • Функция end () возвращает итератор в конец вектора.