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