Форум программистов, компьютерный форум CyberForum.ru

оптимизировать алгоритм поиска вхождений строки в текстовый файл (1 Мб) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Количество цифр после точки http://www.cyberforum.ru/cpp-beginners/thread648534.html
Можно ли посчитать количество цифр после точки в числе, введенном пользователем?
C++ Найти положительные действительные Задается любое положительное действительное число R. Найти положительные действительные R1,R2,...,Rn, Ri<4,i=1,...,n, такие, что R=R1*R2*...*Rn=R1+R2+...+Rn http://www.cyberforum.ru/cpp-beginners/thread648531.html
C++ Вызов функции, использующей vector, из dll
Всем привет! Проблема в следующем: есть dll-ка, в ней 3 простых функции: 1. Sum - сложение 2х целых чисел. 2. Concat - соединяет 2 строки. 3. GetFirst - возвращает 1й элемент вектора, переданного ей в качестве параметра. Далее эта длл динамически загружается, и первые две функции отлично определяются и работают. А вот 3я - нет, программа ее не видит. Как это исправить? Причем интересует...
Бинарный файл C++
Удалить из бинарного файла, в котором записаны целые числа все четные элементы.
C++ Найти сумму квадратов элементов четвертого столбца / k-й строки матрицы http://www.cyberforum.ru/cpp-beginners/thread648528.html
Дан двухмерный массив. Определить: 1. Сумму квадратов элементов четвертого столбца массива. 2. Сумму квадратов элементов k-й строки массива.
C++ Сформировать массив А из четных элементов исходного массива, а массив В - из нечетных Элементы массива Т формируются по правилу: Т(к)=15к-12. Сформировать массив А из четных элементов массива Т, а массив В- из нечетных(к=20) подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.09.2012, 14:16     оптимизировать алгоритм поиска вхождений строки в текстовый файл (1 Мб)
Эм. Делаете четыре массива: одномерный, двухмерный, трёхмерный и четырёхмерный. Размером, соответственно, сколько-букв-в-алфавите по каждому измерению. Заполняете нулями. Там мегабайт памяти или типа того на них надо для греческого.

Делаете четыре циклических буфера (на основе std::deque): на один, два, три и четыре символа соответственно.

Читаете файл посимвольно, если это не буква, ничего не делаем, если буква — заносим её во все буферы с конца. Если буфер полный, то предварительно выкидываем первый символ, чтобы в буфере всегда было один–четыре символа соответственно.

После каждого чтения буквы смотрим на полные буферы и делаем +1 в каждый из массивов по координатам, соответствующих символам, хранящимся в буфере.

В принципе, можно даже обойтись одним буфером на четыре символа. И одним четырёхмерным массивом (выделить, к примеру, двадцать пятую букву под меньшую размерность).
 
Текущее время: 13:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru