Надеюсь, вы уже поняли концепцию C ++ Template, которую мы обсуждали ранее. C ++ STL (Стандартная библиотека шаблонов) — это мощный набор шаблонных классов C ++ для обеспечения классов и функций общего назначения шаблонами, которые реализуют многие популярные и часто используемые алгоритмы и структуры данных, такие как векторы, списки, очереди и стеки.
В основе стандартной библиотеки шаблонов C ++ лежат три хорошо структурированных компонента:
Sr.No | Компонент и описание |
---|---|
1 |
Контейнеры Контейнеры используются для управления коллекциями объектов определенного вида. Существует несколько различных типов контейнеров, таких как deque, list, vector, map и т. Д. |
2 |
Алгоритмы Алгоритмы действуют на контейнеры. Они предоставляют средства, с помощью которых вы будете выполнять инициализацию, сортировку, поиск и преобразование содержимого контейнеров. |
3 |
итераторы Итераторы используются для пошагового прохождения элементов коллекций объектов. Эти коллекции могут быть контейнерами или подмножествами контейнеров. |
Контейнеры
Контейнеры используются для управления коллекциями объектов определенного вида. Существует несколько различных типов контейнеров, таких как deque, list, vector, map и т. Д.
Алгоритмы
Алгоритмы действуют на контейнеры. Они предоставляют средства, с помощью которых вы будете выполнять инициализацию, сортировку, поиск и преобразование содержимого контейнеров.
итераторы
Итераторы используются для пошагового прохождения элементов коллекций объектов. Эти коллекции могут быть контейнерами или подмножествами контейнеров.
Мы обсудим все три компонента 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 () возвращает итератор в конец вектора.