Разница между 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&
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
fshp
@fshp
В чём разница между string_viewили const string_view& в аргументах функции?


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

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

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

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

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

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

Войти через TM ID
Похожие вопросы
от 70 000 до 80 000 руб.
от 160 000 до 200 000 руб.
WakeApp Москва
от 70 000 руб.
15 авг. 2018, в 23:38
300 руб./за проект
15 авг. 2018, в 22:39
60000 руб./за проект
15 авг. 2018, в 21:18
30000 руб./за проект