Здравствуйте, Tom, Вы писали:
Tom>Странно, но не нахожу в CRT функции для сабж. Есть только memchr.
Tom>Может кто то ткнёт носов в CRT или эфективную реализацию сабж...
Здравствуйте, Tom, Вы писали:
Tom>Странно, но не нахожу в CRT функции для сабж. Есть только memchr. Tom>Может кто то ткнёт носов в CRT или эфективную реализацию сабж...
1) std::search
void* memfind(void const* text, size_t textsize, void const* pattern, size_t patternsize)
{
char const* t = (char const*)text;
char const* p = (char const*)pattern;
char const* f = std::search(t, t+textsize, p, p+patternsize);
return
f != t+textsize ? f
: NULL
;
}
Квадратичное время.
2) Реализовать самому алгоритмы КМП или БМ. Будет линейное время.
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Tom, Вы писали:
Tom>>Странно, но не нахожу в CRT функции для сабж. Есть только memchr. Tom>>Может кто то ткнёт носов в CRT или эфективную реализацию сабж...
К>1) std::search К>
К>void* memfind(void const* text, size_t textsize, void const* pattern, size_t patternsize)
К>{
К> char const* t = (char const*)text;
К> char const* p = (char const*)pattern;
К> char const* f = std::search(t, t+textsize, p, p+patternsize);
К> return
К> f != t+textsize ? f
К> : NULL
К> ;
К>}
К>
К>Квадратичное время.
К>2) Реализовать самому алгоритмы КМП или БМ. Будет линейное время.
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Константин Л., Вы писали:
К>>>2) Реализовать самому алгоритмы КМП или БМ. Будет линейное время.
КЛ>>лучше БМ, он быстрее и всегда находит
К>А что, КМП может не найти?!
насколько я помню суть алгоритма (было это года 4 назад), возможны пропуски
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Константин Л., Вы писали:
К>>>А что, КМП может не найти?! КЛ>>насколько я помню суть алгоритма (было это года 4 назад), возможны пропуски
К>Странно. Может быть, какая-нибудь наивная реализация с косяками? К>Перечитаю дома книжку по строкам.
К> К>Кстати, вот списочек http://algolist.manual.ru/search/esearch/index.php