STL find函数

核能气质少年 提交于 2020-01-22 10:19:25
 
 
本博客是转载其他大佬的文章,觉得他写的很好所以转载。侵权删除
 
1、
find()函数的调用形式为 find(start,end,value)
start搜寻的起点,end搜寻的终点,要寻找的value值  
容器的表示方法:find(a.begin(),a.end(),value)
数组的表示方法:find(a,a+length,value)
所有的返回,均是迭代器(容器)或指针(数组),而非是直观感觉上的索引下标。如果在查找范围内不存在,返回a.end(),这里需要注意的是,a.end()不在查找范围内。
 

2.

vector没有实现find函数,除此之外,常见容器都实现了自己的find函数。

这个案例是洛谷p1540

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

int main()
{
    int m,n,t,cnt=0;
    cin>>m>>n;
    vector<int> v;
    while(cin>>t)
    {
        if(find(v.begin() , v.end()) , t) == v.end())
        {
            v.push_back(t);
            cnt++;
        }
        if(v.size()>m)
            v.erase(v.begin());
    }
    cout<<cnt;
    return 0;
} 

String是这一种顺序存储结构,其find函数返回的是下标索引。set,map,multiset,multimap都不是顺序索引的数据结构,所以返回的是迭代器。

3.

如果元素不在

对于返回迭代器的查找,通过判断find(a.begin(),a.end(),value)==a.end(),来判断元素是否存在

对于string,通过a.find(value)==string::npos判断

 
 
 
————————————————
版权声明:本文为CSDN博主「策马奔腾向前冲」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40597059/article/details/85369898
 
 
 
4、
STL的两种find()函数的使用
 
第一种,algorithm头文件的find()。
使用方法:find(begin,end,value)
解释:第一个参数是容器或者数组的起始地址(容器.begin()或者数组名),也可以是任意地址,不非法即可;第二个参数是结束查找的地址(容器.end()或者数组名+长度),value是想要查找的字符或者字符串。查找成功将返回迭代器(容器)或者指针(数组),否则返回end()。
 

第二种,string自带的find()。
使用方法:1.例如在string1中查找string2,string1.find(string2);将返回string2第一次在string1中出现的位置。
如果希望在特定位置开始查找,使用 string1.find(string2,location);
 

————————————————
版权声明:本文为CSDN博主「qq_Xiao菜鸡」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35130138/article/details/86482268
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!