EasySTL

Из каких частей состоит STL?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

STL состоит из четырёх взаимосвязанных частей.

#include <vector>     // Контейнеры: vector, list, map, set...
#include <algorithm>  // Алгоритмы: sort, find, transform...
#include <functional> // Функторы: std::less, std::plus

std::vector<int> v{3, 1, 2};
std::sort(v.begin(), v.end());   // алгоритм через итераторы
auto it = std::find(v.begin(), v.end(), 2);   // итератор
  • Контейнеры — хранят данные (vector, list, deque, map, set, unordered_*, array);
  • Итераторы — обобщение указателей для обхода (input, forward, bidirectional, random_access, contiguous);
  • Алгоритмы — обобщённые функции над диапазонами (sort, find, copy, accumulate);
  • Функторы — классы с operator(), как предикаты (с C++11 их заменяют лямбды).

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.