DanielDemidko
@DanielDemidko
Программист

Разница между string_view и const string_view&?

В чём разница между string_viewили const string_view& в аргументах функции?
Есть ли смысл использовать const string_view& вместо string_view?
Как я понимаю, string_view - это обёртка над указателемchar*.
Получается аргументstring_view будет копировать указатель на char*, аconst string_view& ссылаться на указатель?
Годами я использовал const string& в аргументах для строк. Начал вот приобщаться к новым фичам и не пойму куда приткнуть string_view. Вроде написал, да рука сама тянется переделать в const string_view&
  • Вопрос задан
  • 1160 просмотров
Решения вопроса 1
В чём разница между string_viewили const string_view& в аргументах функции?


В первом случае у вас объект, который вы можете менять. Например настроить его на новую строку. При этом исходный объект останется неизменным, т.к. тут передача параметра по значению, а значит внутри функции у вас будет копия string_view.

Во втором случае у вас ссылка на константу. Поменять объект вы не можете, зато сэкономите несколько байт на стеке.

Если алгоритм не требует менять параметр функции, то предпочитайте второй вариант. Ссылку на константу можно получить от любого объекта.

string_view это не в коем случае не замена string. Не нужно его пихать везде.

string_view это не обёртка над char*. string_view может содержать символ "\0".
string_view это read-only pascal-строка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы