find_end

来源:互联网 发布:维特比算法 维基百科 编辑:程序博客网 时间:2024/05/21 09:57
ForwardIterator find_end(ForwardIterator beg, ForwardIterator end, ForwardIterator searchBeg, ForwardIterator searchEnd);ForwardIterator find_end(ForwardIterator beg, ForwardIterator end, ForwardIterator searchBeg, ForwardIterator searchEnd, BinaryPredicate op);

功能:

两种形式都返回区间[beg, end)内“和区间[searchBeg, searchEnd)完全吻合”的最后一个子区间内的第一个元素位置


备注:
a、第一形式中,子区间元素必须完全等于[searchBeg, searchEnd)的元素
b、第二形式中,子区间元素和[searchBeg, searchEnd)的对应元素必须使op(elem, searchElem)结果为true
c、如果没有找到匹配子区间,两种形式都返回end
d、注意op在函数调用过程中不应该改变自身状态
e、op不应该改动传进来的参数

f、时间复杂度:线性

int main(int argc, char *argv[]){int arr2[] = {1,5,-2,4,3,-2,4,8,-2,4,9};vector<int> vec(arr2, arr2 + sizeof(arr2)/sizeof(arr2[0]));vector<int> vec1;vec1.push_back(-2);vec1.push_back(4);vector<int>::const_iterator iterVec = find_end(vec.begin(),vec.end(),vec1.begin(),vec1.end());if (iterVec !=  vec.end()){cout << "在vec中找到最后一个匹配vec1的子序列,起始位置在" << iterVec - vec.begin() << endl;}else{cout << "在vec中没有找到最后一个匹配vec1的子序列" << endl;}return 0;}


0 0
原创粉丝点击