Mediumstring-view
Почему нужно предпочитать std::string_view для параметров?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
`std::string_view` (C++17) — не владеющий view на строку (ptr + length), без аллокации. Идеален для read-only параметров — принимает и std::string, и const char*.
// Универсально: принимает string, C-string, substring — без аллокации
void log(std::string_view msg);
log("hello"); // const char* — без malloc
std::string s = "world";
log(s); // std::string — без copy
log(s.substr(0, 3)); // substring — без copy
// ПЛОХО: const std::string& + const char* → неявный malloc
void logBad(const std::string& s);
logBad("hello"); // создаёт временную std::string!Осторожно: string_view не null-terminated и не владеет — dangling, если исходная строка умрёт раньше.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.