C++中find函数以及各个迭代器返回值解释

1)
在a[N]中数组中:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
signed main(){
    int a[5]={4,6,8,4,2};
    int target=2;
    auto it=find(a,a+5,target);
    cout<<"查找结果:";
    if(it!=a+5){
        cout<<"yes"<<endl;
        cout<<"地址:"<<it<<endl;//地址
        cout<<"目标值下标:"<<it-a<<endl;//目标值下标
        cout<<"具体目标值:"<<*it<<endl;//具体目标值
    }
    else
        cout<<"no"<<endl;
    return 0;
}

返回值:如果查找成功,返回其在向量中的位置,可使用此迭代器通过it-a表示下标,*it表示其下标对应的值(方法与lower_bound和upper_bound相似),查不到,则返回。

2)
在vector中:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
signed main(){
    int a[5]={4,6,8,4,2};
    vector<int> nums(a,a+5);//初始赋值
    int target=8;
    auto it=find(nums.begin(),nums.end(),target);//vector自身没有有find()函数
    cout<<"查找结果:";
    if(it!=nums.end())//找到目标值
    {
        cout<<"yes"<<endl;
        cout<<"目标值下标:"<<it-nums.begin()<<endl;//目标值下标
        cout<<"具体目标值:"<<*it<<endl;//具体目标值
    }
    else
        cout<<"no"<<endl;
    return 0;
}

返回值:如果查找成功,返回其在向量中的位置,可使用此迭代器通过it-nums.begin()表示下标,*it表示其下标对应的值(方法与lower_bound和upper_bound相似),查不到,则返回nums.end()

3)
在map中:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
signed main(){
    map<int,int> mp;
    int a[7]={4,6,8,4,2,8,4};
    for(auto x:a){
        mp[x]++;
    }
    int target=8;
    auto it=mp.find(target);//map自带的有find()函数
    cout<<"查找结果:";
    if(it!=mp.end())//找到目标值
    {
        cout<<"yes"<<endl;
        cout<<"具体目标值:"<<it->first<<endl;//具体目标值
        cout<<"目标值出现的次数:"<<it->second<<endl;//目标值出现的次数
    }
    else{
        cout<<"no"<<endl;
    }
    return 0;
}

返回值:如果查找,它返回一个指向与键target关联的元素的迭代器,可使用此迭代器通过->first或者->second,查不找,返回mp.end():表示末端元素的下一个元素,这个迭代器起一个哨兵的作用,表示已经处理完所有的元素。
4)
在string中:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
signed main(){
    string a,b;
    cout<<"查找结果:";
    if(a.find(b)!=string::npos)//找到目标值
    {
        cout<<"yes"<<endl;
    }
    else{
        cout<<"no"<<endl;
    }
    return 0;
}

返回值:如果查找,返回第一个下标,是无符号整型,如果查找不到,就会返回4294967295(string::npos表示-1或4294967295)。

最后:

以上是我对经常刷题会用到的find()函数以及以及各个迭代器返回值解释的总结,以上代码均可运行,仅是我个人的总结,可能会有一些问题。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值