2021-8-10 find函式
阿新 • • 發佈:2021-08-10
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; }