日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STL 之find,find_if,find_end,find_first_of

發布時間:2024/4/11 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STL 之find,find_if,find_end,find_first_of 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作用:用來在一個指定的區間中查找元素。


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;??
  • ??
  • ????//?find_end?查找最后一個匹配??
  • ????//?在vecList1?中查找vecList2??
  • ????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;??
  • ????//?find_first_of?首次出現的位置??
  • ????//?可以檢查兩個容器中元素是否相互包含??
  • ????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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。