2021-8-10 find函数

C++ STL find函数总结

适用场景:

1. hash

stl的哈希map有专门的find&&count函数用来查找是否存在某个key
具体用法见用例

/*
* 哈希表的find返回的是一个迭代器,可以通过x->first访问Key,x->second访问val,如果找不到返回哈希表的end()位置
* 哈希表的count返回的是一个int类型的值,如果找到则返回1,找不到返回0
*/
{
    unordered_map<int,int> um;
    for(int i = 0;i<10;i++){
        um.insert({i,i+1});
    }
    unordered_map<int, int>::iterator x= um.find(3);
    int res= um.count(3);
    cout<<x->first<<endl;
    cout<<x->second<<endl;
    cout<<res<<endl;
    x=um.find(100);
    if(x==um.end()){
        cout<<"dont find! "<<endl;
    }
    system("pause");
    return 0;
}

stl其他容器也有find&&count方法,用法与哈希表相似
见下面用例:

{
    vector<int> arr;
    for(int i = 0; i < 100; i++){
        arr.push_back(i+3);
    }
    vector<int>::iterator x=find(arr.begin(),arr.end(),11);
    cout<<*x<<endl;             //11 , 输出的是值为11的迭代器,
    arr.push_back(10);
    int countname = count(arr.begin(),arr.end(),10);
    cout<<countname<<endl;      //2
    system("pause");
    }

除此之外string还有特殊的用法
见用例

{
    string str = "hello world";
    cout<<str.find("ll")<<endl;
    int a = str.find('s');
    cout<<a<<endl;   // -1
	//如果直接cout<<str.find('s')<<endl;输出的是一个非常大的数,没搞清楚为什么
	//但是做if判断的时候可行
	if(str.find('s')== -1){
        cout<<"dont find"<<endl;   //有效输出
    }
    return 0;
}
上一篇:【解题报告】Leecode. 575. 分糖果——Leecode每日一题系列


下一篇:vue