C++ STL子序列匹配

#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
#include <list>
#include <set>
#include <cstdlib>
using namespace std;


template <class Integer>

struct congruent
{
 congruent(Integer mod)
 {
  N=mod;
 }
 bool operator()(Integer a,Integer b)const
 {
  return (a-b)%N==0;
 }
 Integer N;
};

int main()
{
 const char s1[]="Hello,world!";
 const char s2[]="world";
 const int N1=strlen(s1);
 const int N2=strlen(s2);

 const char* p=search(s1,s1+N1,s2,s2+N2);
 if(p!=s1+N1)
  cout<<p-s1<<endl;
 else
  cout<<"error"<<endl;

 /**************带条件的search*****************************/
 int A[10]={23,46,81,2,43,19,14,98,72,51};
 int digits[3]={1,2,3};

 int* seq=search(A,A+10,digits,digits+3,congruent<int>(10));//???执行过程
 if(seq!=A+10)
  cout<<seq-A<<endl;
 else
  cout<<"error"<<endl;

 /**************find_end()查找最后匹配的字符串*****************************/
 char* s="executable.exe";
 char* suffix="exe";

 const int N=strlen(s);
 const int N_suf=strlen(suffix);

 char* location=find_end(s,s+N,suffix,suffix+N_suf);

 if(location!=s+N)
  cout<<location-s<<" "<<location<<endl;

 

 return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值