find_end
Материал из cppreference.com
Синтаксис:
#include <algorithm> forward_iterator find_end( forward_iterator start, forward_iterator end, forward_iterator2 seq_start, forward_iterator2 seq_end ); forward_iterator find_end( forward_iterator start, forward_iterator end, forward_iterator2 seq_start, forward_iterator2 seq_end, BinPred bp );
Функция find_end() ищет последовательность элементов, определенных с помощью seq_start and seq_end. Если такая последовательность найдена между start и end, возвращается итератор на первый элемент последней найденной последовательности. Если не найдено ни одной последовательности, возвращается итератор на end.
Если указан бинарный предикат bp, он используется для поиска соотсветствий между элементами.
Например, следующий код использует find_end() чтобы найти две различные последовательности чисел. В первой части кода происходит поиск последнего вхождения последовательности "1 2 3". Во второй части кода последовательность, которую ищут, не найдена:
int nums[] = { 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4 }; int* result; int start = 0; int end = 11; int target1[] = { 1, 2, 3 }; result = find_end( nums + start, nums + end, target1 + 0, target1 + 3 ); if( *result == nums[end] ) { cout << "Did not find any subsequence matching { 1, 2, 3 }" << endl; } else { cout << "The last matching subsequence is at: " << *result << endl; } int target2[] = { 3, 2, 3 }; result = find_end( nums + start, nums + end, target2 + 0, target2 + 3 ); if( *result == nums[end] ) { cout << "Did not find any subsequence matching { 3, 2, 3 }" << endl; } else { cout << "The last matching subsequence is at: " << *result << endl; }
Смотрите также: adjacent_find, find, find_first_of, find_if, search_n