作用:用來在一個指定的區間中查找元素。
1,find, find_if
原型:
#include?<algorithm>?? template?<class?inputItr,class?size,class?Type>?? inputItr?find(inputItr?first,?inputItr?last,?const?Type&?searchValue);?? ?? template?<class?inputItr,?class?unaryPredicate>?? inputItr?find_if(inputItr?first,?inputItr?last,?UnaryPredicate?op);??
示例代碼:
#include?<iostream>?? #include?<list>?? ?? #include?<string>?? #include?<numeric>?? #include?<iterator>?? #include?<vector>?? #include?<functional>?? ?? #include?<algorithm>?? ?? using?namespace?std;?? ?? int?main()?{?? ????char?cList[10]?=?{'a','i','C','d','e','f','o','H','u','j'};?? ????vector<char>?charList(cList,cList+10);?? ?? ????ostream_iterator<char>?screen(cout,?"?");?? ????cout?<<?"charList:"?<<?endl;?? ????copy(charList.begin(),charList.end(),screen);?? ????cout?<<?endl;?? ?? ?????? ????vector<char>::iterator?position;?? ????position?=?find(charList.begin(),charList.end(),'d');?? ?? ????if?(?position?!=?charList.end())??? ????{?? ????????cout?<<?"position?=?"?<<?(position?-?charList.begin())?<<?endl;??? ????}?else?{?? ????????cout?<<?"the?element?is?not?in?the?list"?<<?endl;?? ????}?? ?? ????position?=?find_if(charList.begin(),charList.end(),isupper);?? ????if?(?position?!=?charList.end())??? ????{?? ????????cout?<<?"position?=?"?<<?(position?-?charList.begin())?<<?endl;??? ????}?else?{?? ????????cout?<<?"the?element?is?not?in?the?list"?<<?endl;?? ????}?? ?? ????return?0;?? }??
運行結果:
charList:
a i C d e f o H u j
position = 3
position = 2
2,find_end,find_first_of
聲明:
#include?<algorithm>?? template?<class?forwardItr1,class?forwardItr2>?? forwardItr1?find_end(forwardItr1?first1,?forwardItr1?last1,forwardItr2?first2,forwardItr2?last2);?? template?<class?forwardItr1,class?forwardItr2,class?binaryPredicate>?? forwardItr1?find_end(forwardItr1?first1,?forwardItr1?last1,forwardItr2?first2,forwardItr2?last2,binaryPredicate?op);?? ?? template?<class?forwardItr1,class?forwardItr2>?? forwardItr1?find_first_of(forwardItr1?first1,?forwardItr1?last1,forwardItr2?first2,forwardItr2?last2);?? template?<class?forwardItr1,class?forwardItr2,class?binaryPredicate>?? forwardItr1?find_first_of(forwardItr1?first1,?forwardItr1?last1,forwardItr2?first2,forwardItr2?last2,binaryPredicate?op);??
示例代碼:
#include?<iostream>?? #include?<list>?? ?? #include?<string>?? #include?<numeric>?? #include?<iterator>?? #include?<vector>?? #include?<functional>?? ?? #include?<algorithm>?? ?? using?namespace?std;?? ?? int?main()?{?? ????int?list1[10]?=?{12,34,56,21,34,78,34,56,12,25};?? ????int?list2[2]?=?{34,56};?? ????int?list3[3]?=?{56,21,35};?? ????int?list4[5]?=?{33,48,21,34,73};?? ?? ????vector<int>?vecList1(list1,list1+10);??? ????vector<int>?vecList2(list2,list2+2);??? ????vector<int>?vecList3(list3,list3+3);??? ????vector<int>?vecList4(list4,list4+5);??? ?? ????vector<int>::iterator?localtion;?? ????ostream_iterator<int>?screen(cout,?"?");?? ?? ????cout?<<?"List1"?<<?endl;?? ????copy(list1,list1+10,screen);?? ????cout?<<?endl;?? ?? ????cout?<<?"List2"?<<?endl;?? ????copy(list2,list2+2,screen);?? ????cout?<<?endl;?? ?? ?????? ?????? ????localtion?=?find_end(vecList1.begin(),vecList1.end(),vecList2.begin(),vecList2.end());?? ????if?(localtion?!=?vecList1.end())?? ????{?? ????????cout?<<?"position?=?"?<<?(localtion?-?vecList1.begin())?<<?endl;?? ????}?else?{?? ????????cout?<<?"vecList2?is?not?in?list1"?<<?endl;?? ????}?? ?? ????cout?<<?"List3:"?<<?endl;?? ????copy(vecList3.begin(),vecList3.end(),screen);?? ????cout?<<?endl;?? ????localtion?=?find_end(vecList1.begin(),vecList1.end(),vecList3.begin(),vecList3.end());?? ????if?(localtion?!=?vecList1.end())?? ????{?? ????????cout?<<?"position?=?"?<<?(localtion?-?vecList1.begin())?<<?endl;?? ????}?else?{?? ????????cout?<<?"vecList3?is?not?in?list1"?<<?endl;?? ????}?? ?? ????cout?<<?"List4:"?<<?endl;?? ????copy(vecList4.begin(),vecList4.end(),screen);?? ????cout?<<?endl;?? ?????? ?????? ????localtion?=?find_first_of(vecList1.begin(),vecList1.end(),vecList4.begin(),vecList4.end());?? ????if?(localtion?!=?vecList1.end())?? ????{?? ????????cout?<<?"position?=?"?<<?(localtion?-?vecList1.begin())?<<?endl;?? ????}?else?{?? ????????cout?<<?"No?element?of?List4?is?in?list1"?<<?endl;?? ????}?? ????return?0;?? }??
運行結果:
List1
12 34 56 21 34 78 34 56 12 25
List2
34 56
position = 6
List3:
56 21 35
vecList3 is not in list1
List4:
33 48 21 34 73
position = 1
總結
以上是生活随笔為你收集整理的STL 之find,find_if,find_end,find_first_of的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。