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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

STL 之adjacent_find, merge,inplace_merge

發(fā)布時(shí)間:2024/4/11 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STL 之adjacent_find, merge,inplace_merge 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

adjacent_find: 查找符合某一準(zhǔn)測(cè)的連續(xù)元素的首次出現(xiàn)

merge:合并有序列表,結(jié)果仍是一個(gè)有序列表

inplace_merge:合并有序連續(xù)序列


聲明:

  • #include?<algorithm>??
  • template<class?forwardItr>??
  • forwardItr?adjacent_find(forwardItr?first,?forwardItr?last);??
  • template<class?forwardItr,?class?binaryPredicate>??
  • forwardItr?adjacent_find(forwardItr?first,?forwardItr?last,?binaryPredicate?op);??
  • ??
  • template<class?inputItr1,class?inputItr2,class?outputItr,?class?binaryPredicate>??
  • outputItr?merge(inputItr1?first1,inputItr1?last1,?inputItr2?first2,?inputItr2?last2,outputItr?destFirst);??
  • template<class?inputItr1,class?inputItr2,class?outputItr>??
  • outputItr?merge(inputItr1?first1,inputItr1?last1,?inputItr2?first2,?inputItr2?last2,outputItr?destFirst,?binaryPredicate?op);??
  • ??
  • template<class?biDirectionalItr>??
  • void?inplace_merge(biDirectionalItr?first,?biDirectionalItr?middle,?biDirectionalItr?last);??
  • template<class?biDirectionalItr,?class?binaryPredicate>??
  • void?inplace_merge(biDirectionalItr?first,?biDirectionalItr?middle,?biDirectionalItr?last,?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]?=?{1,3,5,7,9,0,2,4,6,8};??
  • ????int?list2[10]?=?{0,1,1,2,3,4,4,5,6,6};??
  • ????int?list3[5]?=?{0,2,4,6,8};??
  • ????int?list4[5]?=?{1,3,5,7,9};??
  • ??
  • ????list<int>?intList(list2,list2+10);??
  • ????list<int>::iterator?listItr;??
  • ??
  • ????vector<int>?vecList(list1,list1+10);??
  • ????vector<int>::iterator?vecItr;??
  • ??
  • ????ostream_iterator<int>?srceen(cout?,?"?");??
  • ????cout?<<?"intList:"?<<?endl;??
  • ????copy(intList.begin(),intList.end(),srceen);??
  • ????cout?<<?endl;??
  • ??
  • ????//?查找相鄰元素,是否存在相同的值??
  • ????listItr?=?adjacent_find(intList.begin(),intList.end());??
  • ????if?(listItr?!=?intList.end())??
  • ????{??
  • ????????cout?<<?"ajacent?equal?elements?are?found"?<<?endl;??
  • ????????cout?<<?"value:"?<<?*listItr?<<?endl;??
  • ????}?else?{??
  • ????????cout?<<?"No?adjacent?equal?element"?<<?endl;??
  • ????}??
  • ??
  • ????intList.clear();??
  • ??????
  • ????//?合并??
  • ????merge(list3,list3?+?5,list4,list4?+?5,?back_inserter(intList));??
  • ????cout?<<?"merge?list3?and?list4"?<<?endl;??
  • ????copy(intList.begin(),intList.end(),srceen);??
  • ????cout?<<?endl;??
  • ??
  • ????//?adjacent_find??
  • ????vecItr?=?adjacent_find(vecList.begin(),vecList.end(),greater<int>());??
  • ????cout?<<?">\n"?<<??*vecItr?<<?endl;??
  • ????vecItr++;??
  • ????cout?<<?*vecItr?<<?endl;??
  • ????cout?<<?"vecList:"?<<?endl;??
  • ????copy(vecList.begin(),vecList.end(),srceen);??
  • ????cout?<<?endl;??
  • ??
  • ????//?inplace_merge??
  • ????inplace_merge(vecList.begin(),vecItr,vecList.end());??
  • ????cout?<<?"vecList:"?<<?endl;??
  • ????copy(vecList.begin(),vecList.end(),srceen);??
  • ????cout?<<?endl;??
  • ????return?0;??
  • }??
  • 運(yùn)行結(jié)果:

    intList:
    0 1 1 2 3 4 4 5 6 6
    ajacent equal elements are found
    value:1
    merge list3 and list4
    0 1 2 3 4 5 6 7 8 9
    >
    9
    0
    vecList:
    1 3 5 7 9 0 2 4 6 8
    vecList:
    0 1 2 3 4 5 6 7 8 9

    總結(jié)

    以上是生活随笔為你收集整理的STL 之adjacent_find, merge,inplace_merge的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。