C++ 算法 find_end()function 搜索容器中模式的最後一次出現,或者說容器中一小部分序列的最後一次出現。它本質上在 [first1,last1) 指定的範圍內搜索由 [first2,last2) 定義的序列的出現。如果找到,則返回第一個元素的迭代器,否則返回 last1。
用法
template<class ForwardIterator1, classForwardIterator2>
ForwardIterator1 find_end(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2);
template<class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
ForwardIterator1 find_end(ForwardIterator1 first1,ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred);
參數
first1:它是指向範圍 [first1, last1) 中第一個元素的前向迭代器,其中元素本身包含在範圍內。
last1:它是指向範圍 [first1, last1) 中最後一個元素的前向迭代器,其中元素本身不包含在範圍內。
first2:它是一個前向迭代器,指向範圍 [first2, last2) 中的第一個元素,其中元素本身包含在範圍內。
last2:它是到範圍 [first2, last2) 中最後一個元素的前向迭代器,其中元素本身不包含在範圍內。
pred: 它是一個二元函數,它接受兩個元素作為參數並執行函數設計的任務。
返回值
該函數返回一個迭代器,指向 [first1,last1) 範圍內最後一次出現的 [first2,last2) 的第一個元素。如果未找到該序列,則該函數返回 last1 值。
例子1
#include <iostream>
#include <algorithm>
#include <vector>
bool newfunction (int m, int n)
{
return (m==n);
}
int main ()
{
int newints[] = {1,2,3,4,5,1,2,3,4,5};
std::vector<int> haystack (newints,newints+10);
int patt1[] = {1,2,3};
std::vector<int>::iterator ti;
ti = std::find_end (haystack.begin(), haystack.end(), patt1, patt1+3);
if (ti!=haystack.end())
std::cout << "patt1 last found at position " << (ti-haystack.begin()) << '\n';
int patt2[] = {4,5,1};
ti = std::find_end (haystack.begin(), haystack.end(), patt2, patt2+3, newfunction);
if (ti!=haystack.end())
std::cout << "patt2 last found at position " << (ti-haystack.begin()) << '\n';
return 0;
}
輸出:
patt1 is last found at the position 5 patt2 is last found at the position 3
例子2
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
vector<int>u= {1,3,10,3,10,1,3,3,10,7,8,1,3,10};
vector<int>u1={1,3,10};
vector<int>::iterator ti;
ti=std::find_end(u.begin(),u.end(),u1.begin(),u1.end());
cout<<(ti-u.begin())<<"\n";
return 0;
}
輸出:
11
複雜度
函數的複雜度由count2*(1+count1-count2.這裏countX指定firstX和lastX之間的距離指定。
數據競爭
訪問兩個範圍內的對象。
異常
如果任何參數拋出異常,該函數將拋出異常。
相關用法
- C++ find_if()用法及代碼示例
- C++ find_first_of()用法及代碼示例
- C++ find_if_not()用法及代碼示例
- C++ find_by_order()用法及代碼示例
- C++ find()用法及代碼示例
- C++ fill_n()用法及代碼示例
- C++ fill()用法及代碼示例
- C++ fill用法及代碼示例
- C++ fmax()用法及代碼示例
- C++ fdim()用法及代碼示例
- C++ fmin()用法及代碼示例
- C++ forward_list::unique()用法及代碼示例
- C++ forward_list::emplace_front()用法及代碼示例
- C++ forward_list::reverse()用法及代碼示例
- C++ forward_list::swap()用法及代碼示例
- C++ forward_list::front()、forward_list::empty()用法及代碼示例
- C++ functional::bad_function_call用法及代碼示例
- C++ forward_list::operator=用法及代碼示例
- C++ forward_list::clear()、forward_list::erase_after()用法及代碼示例
- C++ forward_list emplace_after()、emplace_front()用法及代碼示例
注:本文由純淨天空篩選整理自 C++ Algorithm Function find_end ()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。