find()函数

泛型算法的 find:非string类型的容器里,可以直接找出所对应的元素.
find函数需要几个参数:迭代器,下标值,所要找的元素
vector a; 
find(a.begin(),a.end(),1);
这句话就表示从a的头开始一直到尾,找到第一个值为1的元素,返回的是一个指向该元素的迭代器。
find在string容器中用途比较广:
find_first_of,    find_last_of,    find_not_first_of,    find_not_last_of    等等
在string类型中,需要的参数也有迭代器,下标和要找的字符串,这里要注意,是字符串,不能查找单个字符。
string a;
find(a.begin(),a.end(),"asd")
这句话就是说,在a中找到第一个存在子串与"asd"子串相等的字符串的首地址。返回指向该字符串首地址的迭代器。
 
  
find_last_of则是找到最后一个,
find_not_first_of是找出第一个不与“asd”相等的字符串的首地址


举例说明:
#include 
#include
using namespace std; 
void main()
{
复制代码代码如下:
 ////find函数返回类型 size_type string s("1a2b3c4d5e6f7g8h9i1a2b3c4d5e6f7g8ha9i"); string flag; string::size_type position; //find 函数 返回jk 在s 中的下标位置  position = s.find("jk");  if (position != s.npos)  //如果没找到,返回一个特别的标志c++中用npos表示,我这里npos取值是4294967295,  {   cout << "position is : " << position << endl;  }  else  {   cout << "Not found the flag" + flag;  }
代码如下:
//find 函数 返回flag 中任意字符 在s 中第一次出现的下标位置  flag = "c";  position = s.find_first_of(flag);  cout << "s.find_first_of(flag) is : " << position << endl;

复制代码代码如下:
 //从字符串s 下标5开始,查找字符串b ,返回b 在s 中的下标  position=s.find("b",5);  cout<<"s.find(b,5) is : "<
复制代码代码如下:
//查找s 中flag 出现的所有位置。  flag="a";  position=0;  int i=1;  while((position=s.find_first_of(flag,position))!=string::npos)  {   //position=s.find_first_of(flag,position);   cout<<"position  "<
复制代码代码如下:
 //查找flag 中与s 第一个不匹配的位置  flag="acb12389efgxyz789";  position=flag.find_first_not_of (s);  cout<<"flag.find_first_not_of (s) :"<
复制代码代码如下:
 //反向查找,flag 在s 中最后出现的位置  flag="3";  position=s.rfind (flag);  cout<<"s.rfind (flag) :"< 说明: 1.如果string sub = ”abc“;
string s = ”cdeabcigld“;
s.find(sub) , s.rfind(sub) 这两个函数,如果完全匹配,才返回匹配的索引,即:当s中含有abc三个连续的字母时,才返回当前索引。
2.如果没有查询到,则返回string::npos,这是一个很大的数,其值不需要知道。

你可能感兴趣的:(C++,C++)