1. 程式人生 > 其它 >2021-8-10 find函式

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;
}