前言:
所謂變序類演算法,就是在乙個容器裡面,把原有的順序改變,在這裡主要是介紹幾個演算法,reverse翻轉,rotate旋轉次序以及random_shuffle隨機化打亂順序。
reverse
原始碼:template
<
class
bidirectionaliterator
>
void
reverse
( bidirectionaliterator _first,
bidirectionaliterator _last);
舉個例子template
<
class
bidirectionaliterator
>
void reverse (bidirectionaliterator first, bidirectionaliterator last)
}
還有個**reverse_copy(first,end,result)**演算法,跟前面唯一不同的就是把翻轉後的元素放入目的容器// reverse algorithm example
#include
// std::cout
#include
// std::reverse
#include
// std::vector
int main (
)
rotatetemplate
<
class
bidirectionaliterator
,class
outputiterator
>
outputiterator reverse_copy (bidirectionaliterator first,
bidirectionaliterator last, outputiterator result)
;
rotate(beg,newbeg,end)將區間[beg,end)內的元素進行旋轉,執行後*newbeg成為新的第一元素;template
<
class
forwarditerator
>
forwarditerator rotate (forwarditerator first, forwarditerator middle,
forwarditerator last)
;
原始碼:
舉個例子:template
<
class
forwarditerator
>
void rotate (forwarditerator first, forwarditerator middle,
forwarditerator last)
}
還有乙個rotate_copy,跟前面的也是,把結果輸出到目的容器,其他用法都一樣,沒區別。// rotate algorithm example
#include
// std::cout
#include
// std::rotate
#include
// std::vector
int main (
)
力扣旋轉陣列傳送門template
<
class
forwarditerator
,class
outputiterator
>
outputiterator rotate_copy (forwarditerator first, forwarditerator middle,
forwarditerator last, outputiterator result)
;
random_shuffle
在stl中,函式random_shuffle()用來對乙個元素序列進行隨機排序。有個注意點就是對於set、map(自帶排序功能)的容器或者一下非連續性容器無法使用。別人寫的精彩部落格//原始碼
template
<
class
randomaccessiterator
,class
randomnumbergenerator
>
void random_shuffle (randomaccessiterator first, randomaccessiterator last,
randomnumbergenerator& gen)
}//generator by default (1)
template
<
class
randomaccessiterator
>
void random_shuffle (randomaccessiterator first,
//randomaccessiterator last);
specific generator (2)
template
<
class
randomaccessiterator
,class
randomnumbergenerator
>
void random_shuffle (randomaccessiterator first, randomaccessiterator last,
randomnumbergenerator&& gen)
;
一般來說,如果只是僅僅打亂容器順序,下面給出操作:
# include
srand
(unsigned
(time(0
)));
//設定種子
random_shuffle
(vector.
begin()
,vector.
end(),
(int i)
->
int)
變序性演算法
reverse beg,end reverse copy sourcebeg,sourceend,destbeg 旋轉元素次序 rotate beg,newbeg,end 將beg end元素旋轉,然後newbeg成為第乙個元素 rotate copy beg,newbeg,end,destbeg ...
c 演算法 變序性演算法
改變元素的次序,但不改變元素值,這種演算法不能用於關聯性容器,因為在關聯性容器中,元素有一定的次序,不能隨意改動 reverse 將元素的次序逆轉 reverser copy 複製的同時,逆轉元素順序 rotate 旋轉元素的次序 rotate copy 複製的同時,旋轉元素的次序 next per...
STL演算法之變序型演算法
reverse 將元素次序逆轉 reverse copy 將逆序的元素複製到另一串行 rotate 將 first,mid mid,end 元素對調 rotate copy 將rotate 後的序列複製到另一串行 next permutation 得到元素的下一排列次序 並判斷是否是全排列 prev...