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元素。
#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
#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
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)