Для сжатия данных мне нужно открыть файлы (здесь текстовые файлы) и сохранить их содержимое в переменных.String vs vector для хранения больших текстов
Лучше использовать строки или векторы символов для хранения действительно больших текстов (миллионы или более символов)?
Лучше, я имею в виду ускорить цикл над каждым символом, а также быстрее использовать функцию count
для подсчета количества вхождений данного символа в текст.
Размер на самом деле не является проблемой здесь, так как и строка, и вектор могут хранить много символов, и я могу при необходимости разбить текст на несколько подтекстов.
Фактическая производительность зависит от конкретной реализации на C++. В этом отношении нет существенных различий между строками и векторами. Оба контейнера с произвольным доступом обеспечивают сопоставимые возможности. Вы потратите больше времени, пытаясь понять это, тогда вы, возможно, захотите сэкономить, выбрав наиболее оптимальный контейнер. –
На практике, скорее всего, нет никакой разницы. Оба типа обеспечивают форвардные итераторы, которые (обычно) реализованы как указатели. Единственное семантическое различие заключается в том, что читатели вашего кода с большей вероятностью ожидают, что символы 'NUL' встроены в управляемую последовательность для' vector'. Однако, поскольку вы имеете дело с текстовыми файлами, это не проблема. – IInspectable
Ваше узкое место - это не контейнер в памяти, а файл ввода-вывода. Вы захотите использовать контейнер, который вы можете либо изменить размер *, либо установить емкость во время строительства. Перераспределение памяти при чтении из файла происходит очень медленно. –