用于查找目标字符串的find函数

在库中

  1. 查找从指定位置开始的第一次出现的目标字符串:必须所有元素都相同
#include<iostream>

#include<cstdio>

using namespace std;

int main(){

string s1 = "abcdef";
string s2 = "de";

int ans = s1.find(s2,3) ;   //在S1的第三个字符开始查找子串S2

cout<<ans<<endl;
}

  1. 查找子串中的某个字符最先出现的位置:从前往后看只要有一个相同就返回
#include<iostream>

#include<cstdio>

using namespace std;


int main(){
string s1 = "aedef";

string s2 = "dek";

int ans = s1.find_first_of(s2) ;   //在S1中查找子串S2

cout<<ans<<endl;

}

  1. find_last_of(),反向查,从s1尾部开始匹配

  2. rfind()

反向查找字符串,即找到最后一个与子串全部匹配的位置的队首

  1. find_first_not_of()

找到第一个不在子串中的元素的位置

对数组或vector操作的find函数

find函数主要实现的是在容器内查找指定的元素,并且这个元素必须是基本数据类型的。

查找成功返回一个指向指定元素的迭代器,查找失败返回end迭代器。

  1. 在数组中查找
# include  <iostream>
# include  <vector>
# include  <algorithm> //注意要包含该头文件
using  namespace  std;
int  main()
{
     int  nums[] = {  3 ,  1 ,  4 ,  1 ,  5 ,  9  };
     int  num_to_find =  5 ;
     int  start =  0 ;
     int  end =  5 ;
     int * result = find( nums + start, nums + end, num_to_find );
     if ( result == nums + end ) 
     {
         cout<<  "Did not find any number matching "  << num_to_find << endl;
     } 
     else
     {
          cout<<  "Found a matching number: "  << *result << endl;
     }
     return  0 ;
}

  1. 在容器中查找
#include <iostream>
#include <vector>
#include <algorithm>
using  namespace  std;

int main()
{
    vector<int> a{1,2,3,4,5,6,7,8};

    cout << *find(a.begin(),a.end(),13);
    return 0;
}

find_if函数

当容器元素是类时,不能使用find,只能通过find_if来实现

版权声明:本文为ApStar原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ApStar/p/13958279.html