Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
1

STL функция для проверки является ли одна последовательность началом другой

18.09.2017, 02:24. Показов 1436. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нет ли в STL готовой функции для проверки того что последовательность А является началом последовательности Б? Да, написать свое не сложно. Но готовое взять явно проще.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2017, 02:24
Ответы с готовыми решениями:

Определить, является ли одна последовательность циклическим сдвигом другой
Задано число N и две последовательности целых чисел длины N. Определить, является ли одна...

Проверить, что одна строка является началом другой
Добрый день! подскажите пожалуйста с помощью какого оператора можно осуществить след.проверку:...

Проверить, является ли одна строка анаграммой для другой строки
прошу помощи с кодом в коде я сделал следующее : - привел строки к нижнему регистру - убрал...

Функция или метод для проверки, является ли строка представлением заданного числа
1. Создать функцию или метод, для работы со строками и использовать в программе. Strcpy 2....

10
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
18.09.2017, 06:35 2
Может search подойдет.
http://www.cplusplus.com/refer... ?kw=search
http://ru.cppreference.com/w/cpp/algorithm/search
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
18.09.2017, 06:37  [ТС] 3
Цитата Сообщение от мановар Посмотреть сообщение
Может search подойдет.
Это будет перебирать всю последовательность Б, тогда как надо только ее начало.
0
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
18.09.2017, 06:54 4
C++
1
2
3
4
5
int A[] = { 1, 2, 3 };
int B[] = { 1, 2, 3, 4, 1, 2 };
 
if(std::equal(A, A + sizeof(A)/sizeof(A[0]), B))
    std::cout << "Yes";
1
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
18.09.2017, 06:56 5
То есть А входит в Б?
А - 4,5,6,7
Б - 4,5,6,7,8,3,5, ......
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
18.09.2017, 08:32  [ТС] 6
Цитата Сообщение от Геомеханик Посмотреть сообщение
std::equal(A, A + sizeof(A)/sizeof(A[0]), B)
Если учесть случай когда A длиннее Б, то в одну строчку с std::equal уже не получается. Но да, наиболее близкий к желаемому вариант.
Цитата Сообщение от мановар Посмотреть сообщение
То есть А входит в Б?
То есть, Б начинается с А. Да, как в вашем примере. Но если пример чуток переправить:
А - 4, 5, 6, 7
Б - 1, 1, 1, 1, 1, 1, 4, 5, 6, 7
find начнет перебирать все эти единички.
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
18.09.2017, 09:55 7
Цитата Сообщение от Renji Посмотреть сообщение
Но если пример чуток переправить:
Если его чуток переправить, то А уже никак не будет являться началом последовательности Б.
Если в примере Геомеханик, взять
C++
1
int B[] = { 1, 1, 2, 3, 4, 1, 2 };
то equal в данном случае не сработает. Придется опять чего нибудь мутить.
А так equal и смотреть, в зависимости от размера, что с чем сравнивать.
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
18.09.2017, 09:57  [ТС] 8
Цитата Сообщение от мановар Посмотреть сообщение
Если его чуток переправить, то А уже никак не будет являться началом последовательности Б.
Так я и не говорю что А является началом. Я говорю что мне надо проверить является ли А началом.
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
18.09.2017, 10:25 9
Лучший ответ Сообщение было отмечено Renji как решение

Решение

Цитата Сообщение от Renji Посмотреть сообщение
Нет ли в STL готовой функции для проверки того что последовательность А является началом последовательности Б?
starts_with есть в бусте, в стандартной библиотеке такого нет.
либо std::equal, либо свой велосипед.
1
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,884
18.09.2017, 12:03 10
man memcmp
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
18.09.2017, 12:28  [ТС] 11
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
man memcmp
Опять же, не учитывает что А может быть длиннее Б. Плюс, как-то плохо дружит с итераторами.
0
18.09.2017, 12:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2017, 12:28
Помогаю со студенческими работами здесь

Определить, является ли одна строка подстрокой другой
var t:boolean; i,j:integer; s1,s2:string; begin t:=true; writeln(); readln(s1);...

Определить является ли одна строка секвенцией другой
Привет всем, я что-то не могу дойти до решения следующего задания: Нужно протестировать,...

Проверить, является ли одна из очередей частью другой
Создайте две очереди. Проверьте, одна из очередей частью другой. Решение в программе оформляйте...

Определить, является ли одна строка перестановкой другой
Для двух строк написать метод, определяющий, является ли одна строка перестановкой другой. Регистр...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru