C++ 算法 find_first_of() 函數比較存儲在兩個容器中的值,即 [first1, last1) 和 [first2, last2)。如果在 [first1, last1) 中找到與 [first2, last2) 範圍內的元素相似的元素,則該函數返回該元素的迭代器。在兩個範圍中都存在多個相似元素的情況下,返回第一個相似元素的迭代器。如果出現範圍內沒有兩個元素是共同的情況,則返回指向 last1 元素的迭代器。
用法
template<class ForwardIterator1, classForwardIterator2>
ForwardIterator1 find_first_of(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2);
template<class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
ForwardIterator1 find_first_of(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>
#include <cctype>
bool case_insensitive (char a1, char a2)
{
return (std::tolower(a1)==std::tolower(a2));
}
int main ()
{
int newchars[] = {'a','b','c','A','B','C'};
std::vector<char> haystack (newchars,newchars+6);
std::vector<char>::iterator ti;
int patt[] = {'A','B','C'};
ti = find_first_of (haystack.begin(), haystack.end(), patt, patt+3);
if (ti!=haystack.end())
std::cout << "Match 1 is:" << *ti << '\n';
ti = find_first_of (haystack.begin(), haystack.end(),
patt, patt+3, case_insensitive);
if (ti!=haystack.end())
std::cout << "Match 1 is:" << *ti << '\n';
return 0;
}
輸出:
Match 1 is:A Match 1 is:a
例子2
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string str1 = "We are trying to get an idea of the find_first_of function in C++";
string str2= {'a','A','e','E','i','I','o','O','u','U'};
auto pi = std::find_first_of(str1.begin(), str1.end(), str2.begin(), str2.end());
cout<<"First vowel has been discovered at index "<<(pi-str1.begin())<<"\n";
return 0;
}
輸出:
First vowel has been discovered at index 1
複雜度
函數的複雜度由 count1*count2 指定。這裏 countX 指定 firstX 和 lastX 之間的距離。比較一直進行到找到匹配的元素為止。
數據競爭
從這兩個範圍訪問一些元素。
異常
如果任何參數拋出異常,該函數將拋出異常。
相關用法
- C++ find_if()用法及代碼示例
- C++ find_end()用法及代碼示例
- 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_first_of()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。