simstr 1.0
Yet another strings library
 
Загрузка...
Поиск...
Не найдено
Шаблон класса simstr::chunked_string_builder< K >

Для построения длинных динамических строк конкатенацией мелких кусочков. Подробнее...

#include <sstring.h>

Классы

struct  portion_store
 Объект, позволяющий последовательно копировать содержимое в буфер заданного размера Подробнее...
 

Открытые члены

my_typeoperator<< (simple_str< K > data)
 Добавление порции данных
 
my_typeoperator<< (const StrExprForType< K > auto &expr)
 Добавление строкового выражения
 
template<typename T>
requires std::is_same_v<T, K>
my_typeoperator<< (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 +=, но экономнее по памяти. Если не сливать в одну строку, а дальше перебирать буфера - быстрее. Сам является строковым выражением.

Методы

◆ data()

template<typename K>
const auto & simstr::chunked_string_builder< K >::data ( ) const
inline

Получить внутренние буфера с данными

Возвращает
const auto&

◆ get_portion()

template<typename K>
portion_store simstr::chunked_string_builder< K >::get_portion ( ) const
inline

Получить portion_store, черезк который можно последовательно извлекать данные во внешний буфер

Возвращает
portion_store

◆ out()

template<typename K>
template<typename Op>
void simstr::chunked_string_builder< K >::out ( const Op & o) const
inline

Применяет функтор к каждому сохранённому буферу

Параметры шаблона
Op- тип функтора, функция вида (const K* ptr, size_t len)
Аргументы
o- функтор

Объявления и описания членов класса находятся в файле: