Mediumstring_view
Чем std::string_view эффективнее std::string?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
std::string_view (C++17) — легковесная не владеющая ссылка на строку: 16 байт (указатель + длина), без аллокации. Идеален для параметров функций.
// Принимает и std::string, и const char*, и substring без копирования
void print(std::string_view s);
print("hello");
print(std::string("world"));
print(big.substr(0, 5)); // O(1) — без аллокации
// ОПАСНОСТЬ: dangling — временный string умирает
// std::string_view sv = std::string("tmp"); // sv висит- Не null-terminated (нельзя в C API), не владеет, нельзя модифицировать;
- Использовать для параметров, не для хранения;
- С C++20
std::span<T>— аналог для массивов.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.