Стандартная библиотека шаблонов (STL) в C++
STL (Standard Template Library) - это библиотека шаблонов, которая содержит множество контейнеров, алгоритмов и итераторов для управления коллекциями данных в C++. Она была разработана в рамках стандарта языка C++ в 1990-х годах и с тех пор является частью стандартной библиотеки языка.
Контейнеры - это классы, которые содержат набор элементов и методы для их манипуляции. В STL включены следующие контейнеры: векторы (vector), списки (list), динамические массивы (array), очереди (queue), стеки (stack), отображения (map) и множества (set).
Алгоритмы - это функции, которые могут использоваться для работы с контейнерами. В STL включено более 100 алгоритмов, включая сортировку, поиск, копирование, удаление и многое другое.
Итераторы - это объекты, которые могут использоваться для доступа к элементам коллекции. В STL включено множество итераторов, включая обычные итераторы, константные итераторы, обратные итераторы и итераторы ввода-вывода.
Использование STL может значительно упростить написание кода и улучшить его производительность. Например, вместо того чтобы писать свой собственный код для реализации стека или очереди, можно использовать контейнеры stack и queue из STL. Кроме того, алгоритмы STL обычно быстрее и надежнее, чем реализации алгоритмов, написанных вручную.
Ниже приведены примеры кода, демонстрирующие использование некоторых элементов STL:
Пример использования контейнера vector:
c++
#include
#include
using namespace std;
int main() {
vector v; // создаем пустой вектор целых чисел
// добавляем элементы в вектор
v.push_back(5);
v.push_back(10);
v.push_back(15);
// выводим элементы вектора на экран
for (auto i = v.begin(); i != v.end(); i++) {
cout << *i << " ";
}
cout << endl;
return 0;
}
Пример использования алгоритма сортировки:
c++
#include
#include
#include
using namespace std;
int main() {
vector v = {5, 10, 3, 8, 2};
// сортируем вектор
sort(v.begin(), v.end());
// выводим элементы вектора на экран
for (auto i = v.begin(); i != v.end(); i++) {
cout << *i << " ";
}
cout << endl;
return 0;
}
Пример использования итератора обратного доступа:
c++
#include
#include
using namespace std;
int main() {
vector v = {5, 10, 15, 20};
// создаем итератор обратного доступа
auto r = v.rbegin();
// выводим элементы вектора в обратном порядке
while (r != v.rend()) {
cout << *r << " ";
r++;
}
cout << endl;
return 0;
}