天天看點

泛型算法之find_first_of

查找某些元素第一次出現的地點

InputIterator find_first_of (InputIterator beg, InputIterator end,ForwardIterator searchBeg, ForwardIterator searchEnd);

InputIterator find_first_of (InputIterator beg, InputIterator end,ForwardIterator searchBeg, ForwardIterator searchEnd,BinaryPredicate op);

  1. 第一種形式傳回第一個既出現在[beg,end]内也出現在區間[searchBeg,searchEnd]的元素在[beg,end]中的位置。
  2. 第二種形式傳回第一個在[beg,end]區間内使[searchBeg,searchEnd]中任意一個元素傳回真的位置。
  3. 如果比對到,兩種形式都傳回end
  4. op不能在函數執行過程中改變狀态,也不應改變區間内的元素。
  5. 如果使用反向疊代器,則可以用來查找最後一個滿足條件的元素位置。
int main()
{
    vector<int>v{ 1,2,3,4,5,6,7,1,1,2,0,3,9,4,8,8,4 };
    list<int>lst{6,8,2,3,4};
    cout << *find_first_of(v.begin(), v.end(), lst.begin(), lst.end())<<ends;
    cout << *find_first_of(v.rbegin(), v.rend(), lst.begin(), lst.end(), [](int a,int b)
    {
	return a>b;
    });

    return 0;
}
           

輸出結果:2  4