Учебники

Учебник по C ++ STL

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

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

Sr.No Компонент и описание
1

Контейнеры

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

2

Алгоритмы

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

3

итераторы

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

Контейнеры

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

Алгоритмы

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

итераторы

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

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

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

Live Demo

#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 () возвращает итератор в конец вектора.