C++ 算法 中的 find_first_of函数

首页 / C++入门教程 / C++ 算法 中的 find_first_of函数

C++算法find_first_of()函数比较存储在两个集合中的值,即[first1,last1)和[first2,last2)。如果在[first1,last1)中找到与[first2,last2)参数内的元素相似的元素,则该函数将返回对该元素的迭代器。在两个参数中都存在多个相似元素的情况下,将返回第一个相似元素的迭代器。如果出现参数内没有两个公共元素的情况,则返回last1元素的迭代器。

find_first_of - 语法

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);

find_first_of - 参数

first1 :它是参数[first1,last1)中第一个元素的正向迭代器,其中元素本身包含在参数中。

last1 :它是参数[first1,last1)中最后一个元素的前向迭代器,其中元素本身不包含在参数中。

first2 :它是参数[first2,last2)中第一个元素的正向迭代器,其中元素本身包含在参数中。

last2 :它是参数[first2,last2)中最后一个元素的前向迭代器,其中元素本身不包含在参数中。

pred :它是一个二进制函数,接受两个元素作为参数并执行该函数设计的任务。

find_first_of - 返回值

该函数将迭代器返回到参数[first1,last1)的第一个公共元素,该元素也是参数[first2,last2)的一部分。如果找不到这样的元素,则该函数返回last1元素。

find_first_of - 例子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

find_first_of - 例子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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Web协议详解与抓包实战 -〔陶辉〕

零基础学Java -〔臧萌〕

网络编程实战 -〔盛延敏〕

Netty源码剖析与实战 -〔傅健〕

小马哥讲Spring核心编程思想 -〔小马哥〕

系统性能调优必知必会 -〔陶辉〕

如何落地业务建模 -〔徐昊〕

AI 应用实战课 -〔黄佳〕

徐昊 · AI 时代的软件工程 -〔徐昊〕

好记忆不如烂笔头。留下您的足迹吧 :)