Стандартная библиотека C++: полный обзор и примеры

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Стандартная библиотека C++: полный обзор

Стандартная библиотека C++ (C++ Standard Library) — это мощный набор классов, функций, макросов и шаблонов, который поставляется вместе с любым компилятором C++. Она предоставляет готовые решения для большинства типовых задач: от работы с контейнерами данных до сетевого взаимодействия и многопоточности. В этой статье мы разберём основные компоненты библиотеки, покажем примеры кода и объясним, как эффективно использовать её возможности.

Основные компоненты стандартной библиотеки

Стандартная библиотека делится на несколько крупных разделов:

  • STL (Standard Template Library) — контейнеры, итераторы, алгоритмы и функциональные объекты.
  • Ввод/вывод — потоки (iostream), файловые потоки (fstream), строковые потоки (sstream).
  • Строки — класс std::string и std::string_view.
  • Числовые операции — математические функции (cmath), случайные числа (random), комплексные числа (complex).
  • Многопоточность — потоки (thread), мьютексы, условные переменные.
  • Утилиты — std::optional, std::variant, std::any, умные указатели (shared_ptr, unique_ptr).

Контейнеры STL

Контейнеры — это шаблонные классы, предназначенные для хранения коллекций объектов. Они делятся на последовательные и ассоциативные.

Последовательные контейнеры

  • std::vector — динамический массив. Быстрый доступ по индексу, медленная вставка в середину.
  • std::deque — двусторонняя очередь. Быстрая вставка/удаление с обоих концов.
  • std::list — двусвязный список. Быстрая вставка/удаление в любом месте, но медленный доступ по индексу.
#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {10, 20, 30, 40};
    numbers.push_back(50); // Добавление в конец
    for (int n : numbers) {
        std::cout << n << " ";
    }
    return 0;
}

Ассоциативные контейнеры

  • std::set — множество уникальных элементов (отсортировано).
  • std::map — словарь «ключ-значение» (отсортировано по ключу).
  • std::unordered_set / std::unordered_map — хеш-таблицы (не сортированы, но быстрее).
#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> ages;
    ages["Alice"] = 30;
    ages["Bob"] = 25;
    for (const auto& [name, age] : ages) {
        std::cout << name << ": " << age << std::endl;
    }
    return 0;
}

Алгоритмы

Библиотека <algorithm> содержит более 100 алгоритмов для работы с последовательностями: сортировка, поиск, копирование, трансформация и т.д. Все алгоритмы работают через итераторы, что делает их универсальными.

#include <iostream>
#include <algorithm>
#include <vector>

int main() {
    std::vector<int> v = {5, 2, 8, 1, 9};
    std::sort(v.begin(), v.end()); // Сортировка по возрастанию
    auto it = std::find(v.begin(), v.end(), 8);
    if (it != v.end()) {
        std::cout << "Найдено: " << *it << std::endl;
    }
    return 0;
}

Работа со строками

Класс std::string предоставляет удобные методы для работы с текстом: поиск, замена, конкатенация, сравнение. В C++17 добавлен std::string_view для невладеющего просмотра строк.

#include <iostream>
#include <string>

int main() {
    std::string text = "Hello, C++ World!";
    size_t pos = text.find("C++");
    if (pos !=                    

Рекомендаций