strstr по цепочке буферов
От: Аноним  
Дата: 29.01.08 10:16
Оценка:
Кто-нибудь встречал такую функцию, которая выполняет тоже самое, что делает strstr но по цепочке буферов?
Re: strstr по цепочке буферов
От: d.4 Россия  
Дата: 29.01.08 11:12
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Кто-нибудь встречал такую функцию, которая выполняет тоже самое, что делает strstr но по цепочке буферов?


Может, просто цикл использовать?
... << RSDN@Home 1.2.0 alpha rev. 774>>
Re[2]: strstr по цепочке буферов
От: Аноним  
Дата: 29.01.08 12:30
Оценка:
Искомая строка может быть на границе между буферами.

d.4>Может, просто цикл использовать?
Re[3]: strstr по цепочке буферов
От: dcb-BanDos Россия  
Дата: 29.01.08 12:47
Оценка:
Здравствуйте, Аноним, Вы писали:



d.4>>Может, просто цикл использовать?


А>Искомая строка может быть на границе между буферами.


так додумай, алгоритм то тривиальный
Ничто не ограничивает полет мысли программиста так, как компилятор.
Re[4]: strstr по цепочке буферов
От: d.4 Россия  
Дата: 29.01.08 13:21
Оценка:
А>>Искомая строка может быть на границе между буферами.

DB>так додумай, алгоритм то тривиальный


... и в студию, плиз, как будет готово!
... << RSDN@Home 1.2.0 alpha rev. 774>>
Re[4]: strstr по цепочке буферов
От: Аноним  
Дата: 29.01.08 13:29
Оценка:
Во-первых не хочется изобретать велосипедов.
А во-вторых, эффективный алгоритм не настолько тривиальный как кажется на 1й взгляд, а какой-нибудь такой:
http://rsdn.ru/article/alg/textsearch.xml
Автор(ы): Андрей Боровский
Дата: 28.01.2002


DB>так додумай, алгоритм то тривиальный
Re: strstr по цепочке буферов
От: Roman Odaisky Украина  
Дата: 29.01.08 14:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Кто-нибудь встречал такую функцию, которая выполняет тоже самое, что делает strstr но по цепочке буферов?


std::search умеет всё, были бы итераторы.
До последнего не верил в пирамиду Лебедева.
Re[2]: strstr по цепочке буферов
От: Аноним  
Дата: 29.01.08 23:31
Оценка:
RO>std::search умеет всё, были бы итераторы.
тока нифига не оптимально
Re[3]: strstr по цепочке буферов
От: TarasCo  
Дата: 30.01.08 08:17
Оценка:
RO>>std::search умеет всё, были бы итераторы.
А>тока нифига не оптимально

а strstr — верх оптимальности?
Да пребудет с тобою сила
Re[4]: strstr по цепочке буферов
От: Аноним  
Дата: 30.01.08 08:25
Оценка:
TC>а strstr — верх оптимальности?
уж оптимальнее серча. Ибо ищет отнюдь не последовательным перебором.
Re[5]: strstr по цепочке буферов
От: TarasCo  
Дата: 30.01.08 15:49
Оценка:
А>уж оптимальнее серча. Ибо ищет отнюдь не последовательным перебором.

какой же алгоритм у strstr если не последовательный перебор? В оптимизированном виде функция может в определенных условиях сравнивать несколько символов за одну операцию сравнения. Но алгоритм то — тот же. Если исходный буфер большой и искомая подстрока тоже, возможно, имеет смысл использовать какие нибудь более быстрые алгоритмы поиска — например, попробовать boost::regexp. Последний, кстати, может работать с итераторами и можно подсунуть ему какой нибудь самописный контейнер, содержащий фрагментированные данные.
Да пребудет с тобою сила
Re[6]: strstr по цепочке буферов
От: Roman Odaisky Украина  
Дата: 30.01.08 18:15
Оценка:
Здравствуйте, TarasCo, Вы писали:

А>>уж оптимальнее серча. Ибо ищет отнюдь не последовательным перебором.


TC>какой же алгоритм у strstr если не последовательный перебор? В оптимизированном виде функция может в определенных условиях сравнивать несколько символов за одну операцию сравнения. Но алгоритм то — тот же. Если исходный буфер большой и искомая подстрока тоже, возможно, имеет смысл использовать какие нибудь более быстрые алгоритмы поиска — например, попробовать boost::regexp. Последний, кстати, может работать с итераторами и можно подсунуть ему какой нибудь самописный контейнер, содержащий фрагментированные данные.


strstr знает, что искомая строка — последовательность символов, которых в алфавите всего 255, так что она может использовать алгоритмы KMP, Boyer—Moore или еще какие-нибудь. std::search тоже могла бы, но обычно не хочет.
До последнего не верил в пирамиду Лебедева.
Re[4]: strstr по цепочке буферов
От: Кодт Россия  
Дата: 01.02.08 17:40
Оценка:
Здравствуйте, dcb-BanDos, Вы писали:

А>>Искомая строка может быть на границе между буферами.

DB>так додумай, алгоритм то тривиальный

Какой алгоритм называть тривиальным, вот вопрос.
Если тупой линейный (квадратичный, разумеется) поиск, аналогичный strstr() — то он требует произвольного доступа к тексту (что плохо вяжется с цепочкой буферов — особенно, если она односвязная).
По той же причине здесь неприменим Бойер-Мур.

Если искомая строка зафиксирована, а текст варьируется — то подойдёт Кнут-Моррис-Пратт и другие потоковые алгоритмы.
Если же наоборот, зафиксирован текст — тогда можно было бы предложить построить суффиксное дерево над ним. Но, боюсь, сам факт размещения текста в цепочке буферов значит, что текст большой, и фокус может не пройти...
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[2]: strstr по цепочке буферов
От: Кодт Россия  
Дата: 01.02.08 17:40
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>std::search умеет всё, были бы итераторы.


Были бы соответствующие итераторы (произвольного доступа). Над списками это, как минимум, неоптимально, а то и просто невозможно.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[5]: strstr по цепочке буферов
От: Кодт Россия  
Дата: 01.02.08 17:45
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>А во-вторых, эффективный алгоритм не настолько тривиальный как кажется на 1й взгляд, а какой-нибудь такой:

А>http://rsdn.ru/article/alg/textsearch.xml
Автор(ы): Андрей Боровский
Дата: 28.01.2002


БМ не подходит. Нужно смотреть КМП.
А вообще, есть замечательная книга Дэна Гасфилда "Строки, суффиксные деревья и последовательности в алгоритмах"
(http://www.ozon.ru/context/detail/id/1393109/)
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.