endl;
}
system("pause");
return 0;
}
7.15 最后一个子序列搜索
Find_end 算法函数,用于在一个序列中查找另一个序列中的最后一次出现位置。find_end函数的用法如下:
template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 find_end(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2);
其中,first1、last1
是迭代器,表示待查找的序列的范围;first2、last2
是迭代器,表示要查找的子序列的范围。调用find_end
函数后,将会在[first1, last1]
区间中查找最后一个与[first2, last2]
相匹配的子序列,并返回距离区间结束点的最后一个元素的迭代器,如果没有找到匹配的子序列,将返回last1。
简单来讲,该算法实现了在一个序列中搜索出最后一个与另一个序列匹配的子序列,如下是一段应用案例。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, char* argv[])
{
vector<int> var1 = { -5,1,2,-6,-8,1,2,-11 };
vector<int> var2 = { 1, 2 };
// var1中查找最后一个子序列var2
vector<int>::iterator it;
it = find_end(var1.begin(), var1.end(), var2.begin(), var2.end());
// 打印子序列在var1的起始位置,输出起offset
if (it != var1.end())
cout << "offset = [" << it - var1.begin() << "]" << endl;
system("pause");
return 0;
}
本文作者: 王瑞
本文链接: https://www.lyshark.com/post/4d3e4328.html
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!