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 подскажет развёрнутый ответ в реальном времени.