作用:倒置或調換區間元素的位置
聲明:
#include?<algorithm>?? template?<class?biDirectionalItr>?? void?reverse(biDirectionalItr?first,?biDirectionalItr?last);?? ?? template?<class?biDirectionalItr,?class?outputItr>?? outputItr?reverse_copy(biDirectionalItr?first,?biDirectionalItr?last,outputItr?destFirst);?? ?? template?<class?forwardItr>?? void?rotate(forwardItr?first,?forwardItr?newFirst,?forwardItr?last);?? ?? template?<class?forwardItr,?class?outputItr>?? outputItr?rotate_copy(forwardItr?first,?forwardItr?middle,?forwardItr?middle,last,outputItr?destFirst);??
示例代碼:
#include?<iostream>?? #include?<list>?? ?? #include?<string>?? #include?<numeric>?? #include?<iterator>?? #include?<vector>?? #include?<functional>?? ?? #include?<algorithm>?? ?? using?namespace?std;?? ?? int?main()?{?? ????int?temp[10]?=?{1,3,5,7,9,0,2,4,6,8};?? ????list<int>?intList(temp,temp+10);?? ????list<int>?resultList;?? ????list<int>::iterator?listItr;?? ?? ????ostream_iterator<int>?screen(cout,"?");?? ????cout?<<?"intList"?<<?endl;?? ????copy(intList.begin(),intList.end(),screen);?? ????cout?<<?endl;?? ?????? ????reverse(intList.begin(),intList.end());?? ????cout?<<?"intList"?<<?endl;?? ????copy(intList.begin(),intList.end(),screen);?? ????cout?<<?endl;?? ?? ?????? ????reverse_copy(intList.begin(),intList.end(),back_inserter(resultList));?? ????cout?<<?"resultList:"?<<?endl;?? ????copy(resultList.begin(),resultList.end(),screen);?? ????cout?<<?endl;?? ?? ????listItr?=?intList.begin();?? ????listItr++;?? ????listItr++;?? ????cout?<<?"intList?before?ratete"?<<?endl;?? ????copy(intList.begin(),intList.end(),screen);?? ????cout?<<?endl;?? ?????? ????rotate(intList.begin(),listItr,intList.end());?? ????cout?<<?"intList?after?ratete"?<<?endl;?? ????copy(intList.begin(),intList.end(),screen);?? ????cout?<<?endl;?? ?? ????resultList.clear();?? ?????? ????rotate_copy(intList.begin(),listItr,intList.end(),back_inserter(resultList));?? ????cout?<<?"intList?after?ratete_copy"?<<?endl;?? ????copy(intList.begin(),intList.end(),screen);?? ????cout?<<?endl;?? ?? ????cout?<<?"resultList:"?<<?endl;?? ????copy(resultList.begin(),resultList.end(),screen);?? ????cout?<<?endl;?? ?? ????resultList.clear();?? ?????? ????rotate_copy(intList.begin(),find(intList.begin(),intList.end(),6),intList.end(),back_inserter(resultList));?? ????cout?<<?"resultList:"?<<?endl;?? ????copy(resultList.begin(),resultList.end(),screen);?? ????cout?<<?endl;?? ?? ????return?0;?? }??
運行結果:
intList
1 3 5 7 9 0 2 4 6 8
intList
8 6 4 2 0 9 7 5 3 1
resultList:
1 3 5 7 9 0 2 4 6 8
intList before ratete
8 6 4 2 0 9 7 5 3 1
intList after ratete
4 2 0 9 7 5 3 1 8 6
總結
以上是生活随笔為你收集整理的STL 之reverse,reverse_copy,rotate,rotate_copy的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。