Telegram Group & Telegram Channel
📌 Оптимизация работы со строками в C++: std::string_view vs std::string

Привет, друзья! Сегодня хочу обсудить одну из самых частых проблем в C++ – работу со строками. А именно, почему std::string_view – это мощный инструмент, который может значительно ускорить ваш код.

Проблема: Копирование строк
Допустим, у вас есть функция, которая принимает строку:


void process(std::string s) {
// работа со строкой
}

Каждый раз, когда вызывается эта функция, создаётся новая копия строки. Если строка длинная, это дорого по времени и памяти.

Решение: Используем std::string_view
С std::string_view можно избежать лишнего копирования:


void process(std::string_view s) {
// работа со строкой без копирования
}

Теперь s – это просто представление строки, а не её копия. Вы можете передавать как std::string, так и char*, что делает API более гибким.

🚀 Преимущества std::string_view:
Не создает копий – работает быстрее.
Поддерживает стандартные операции (substr, find и т. д.).
Работает с std::string, char*, массивами символов.
Идеально подходит для парсинга и работы с текстом.

🔥 Важно помнить:
- std::string_view не управляет памятью, так что будьте осторожны с временными строками.
- Если строка-источник уничтожена, std::string_view станет невалидным.

Пример неверного использования:

std::string_view bad() {
std::string s = "Hello";
return s; // UB, строка уничтожена!
}


➡️ @cpp_geek



tg-me.com/cpp_geek/287
Create:
Last Update:

📌 Оптимизация работы со строками в C++: std::string_view vs std::string

Привет, друзья! Сегодня хочу обсудить одну из самых частых проблем в C++ – работу со строками. А именно, почему std::string_view – это мощный инструмент, который может значительно ускорить ваш код.

Проблема: Копирование строк
Допустим, у вас есть функция, которая принимает строку:


void process(std::string s) {
// работа со строкой
}

Каждый раз, когда вызывается эта функция, создаётся новая копия строки. Если строка длинная, это дорого по времени и памяти.

Решение: Используем std::string_view
С std::string_view можно избежать лишнего копирования:


void process(std::string_view s) {
// работа со строкой без копирования
}

Теперь s – это просто представление строки, а не её копия. Вы можете передавать как std::string, так и char*, что делает API более гибким.

🚀 Преимущества std::string_view:
Не создает копий – работает быстрее.
Поддерживает стандартные операции (substr, find и т. д.).
Работает с std::string, char*, массивами символов.
Идеально подходит для парсинга и работы с текстом.

🔥 Важно помнить:
- std::string_view не управляет памятью, так что будьте осторожны с временными строками.
- Если строка-источник уничтожена, std::string_view станет невалидным.

Пример неверного использования:

std::string_view bad() {
std::string s = "Hello";
return s; // UB, строка уничтожена!
}


➡️ @cpp_geek

BY C++ geek


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/cpp_geek/287

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

In many cases, the content resembled that of the marketplaces found on the dark web, a group of hidden websites that are popular among hackers and accessed using specific anonymising software.“We have recently been witnessing a 100 per cent-plus rise in Telegram usage by cybercriminals,” said Tal Samra, cyber threat analyst at Cyberint.The rise in nefarious activity comes as users flocked to the encrypted chat app earlier this year after changes to the privacy policy of Facebook-owned rival WhatsApp prompted many to seek out alternatives.

For some time, Mr. Durov and a few dozen staffers had no fixed headquarters, but rather traveled the world, setting up shop in one city after another, he told the Journal in 2016. The company now has its operational base in Dubai, though it says it doesn’t keep servers there.Mr. Durov maintains a yearslong friendship from his VK days with actor and tech investor Jared Leto, with whom he shares an ascetic lifestyle that eschews meat and alcohol.

telegram from us


Telegram C++ geek
FROM USA