|
my_type & | operator<< (simple_str< K > data) |
| Добавление порции данных
|
|
my_type & | operator<< (const StrExprForType< K > auto &expr) |
| Добавление строкового выражения
|
|
template<typename T>
requires std::is_same_v<T, K> |
my_type & | operator<< (T data) |
| Добавление символа
|
|
constexpr size_t | length () const noexcept |
| Длина сохранённого текста
|
|
void | reset () |
| Сбрасывает содержимое, но при этом не удаляет первый буфер, чтобы потом избежать аллокации
|
|
template<typename Op> |
void | out (const Op &o) const |
| Применяет функтор к каждому сохранённому буферу
|
|
bool | is_continuous () const |
| Проверяет, расположен ли весь текст одним непрерывным куском в памяти
|
|
const K * | begin () const |
| Получить указатель на начало первого буфера. Имеет смысл применять только если is_continuous true.
|
|
void | clear () |
| Очистить объект, освободив все выделенные буфера.
|
|
portion_store | get_portion () const |
| Получить portion_store, черезк который можно последовательно извлекать данные во внешний буфер
|
|
const auto & | data () const |
| Получить внутренние буфера с данными
|
|
template<typename K>
class simstr::chunked_string_builder< K >
Для построения длинных динамических строк конкатенацией мелких кусочков.
Выделяет по мере надобности отдельные блоки заданного размера (или кратного ему для больших вставок), чтобы избежать релокации длинных строк. После построения можно слить в одну строку. Как показали замеры, если сливать потом в одну строку, работает медленнее, чем lstring +=, но экономнее по памяти. Если не сливать в одну строку, а дальше перебирать буфера - быстрее. Сам является строковым выражением.