Я имею дело с гигантскими (до 2 ГБ) строк и их срезами в программе на С ++. Строки в стиле C кажутся ненадежными при таких обстоятельствах, но могут быть разрезаны тривиально (без «\ 0» в конце). С другой стороны, как я понял, std :: string :: substr копирует срез, поэтому я должен выполнить хотя бы одну дополнительную операцию добавления (индекс + база) для индексации, чтобы рациональное использование памяти.Как управлять струнными срезами с меньшими накладными расходами?
ответ
Наиболее общим решением было бы создать объект среза с использованием интерфейса и использовать его. Объект среза может состоять из двух итераторов , начала и конца.
И решите, какую семантику вы хотите для срезов: являются ли символы в разрезе мозаикой? Если это так, нужно модифицировать срез, чтобы изменить полную строку? Если вы изменяете, но не разделяете, вам нужна копия-на-запись, что лишняя тонна удовольствия, если вы не можете выкопать какую-то старую COW-реализацию 'std :: string' и использовать ее (переименованную). –
К счастью, мои строки доступны только для чтения. – leventov
- 1. Не нужны ли файлы с накладными расходами?
- 2. Как сохранить и получить InputStream в текстовом файле с меньшими накладными расходами
- 3. Perl Mechanize - как заставить скрипт работать быстрее с меньшими накладными расходами
- 4. Проблемы с огромными накладными расходами процессора
- 5. Вставка в две таблицы с минимальными накладными расходами
- 6. Удаление параметров пакета параметров с минимальными накладными расходами
- 7. Обновление пользовательского виджета Qt с большими накладными расходами
- 8. Есть ли разница между накладными расходами между COMMIT и ROLLBACK?
- 9. Держите Android локальной БД (Realm) в синхронизации с SQL Server с минимальными накладными расходами сети
- 10. Передать файл веб-работнику с помощью refference с минимальными накладными расходами
- 11. Есть ли что-нибудь, что я могу сделать с накладными расходами от запуска шейдера несколько раз
- 12. window.open issue в IE9, открывает новое окно с накладными расходами 4px по указанному размеру
- 13. обмен буфером между службой Java и родным приложением с минимальными накладными расходами
- 14. Ужасная производительность - простая проблема с накладными расходами, или есть программный недостаток?
- 15. Flash AS1/AS2: быстрый + грязный SOAP-msg send с минимальными накладными расходами?
- 16. JNI: лучший способ передать глобальную переменную взад-вперед с наименьшими накладными расходами?
- 17. SVG с девятью срезами масштабирования
- 18. Ярлыки с накладными табличками - D3
- 19. openstreetmap с меньшими деталями
- 20. на языке drupal: grep и pipe - список всех результатов, чтобы избежать проблем с накладными расходами и серверами
- 21. массива ключи Сравнение с Струнными символами
- 22. Анализатор Standford с меньшими метками
- 23. perl argparse с меньшими зависимостями
- 24. Как управлять расходами на лазурную учетную запись в Azure при использовании таблиц WAD
- 25. Как использовать aimate.css встряхнуть с меньшими колебаниями
- 26. Как вызвать хранимую процедуру с меньшими параметрами?
- 27. Репликация функциональности с 9 срезами в WPF
- 28. как создать и инициализировать массив с другими струнными парами
- 29. OpenCV: Build с меньшими возможностями
- 30. Как __getitem__, __setitem__, работать со срезами?
До сих пор это не вопрос. Кроме этого, вы не можете делать (чтение) нарезки с помощью итераторов? – moooeeeep
Я ищу способ отрезать std :: string эффективно или подтвердить, что это нереально. – leventov
Что такое _unreal_ string? – RedX