reverse() 將元素次序逆轉
reverse_copy() 將逆序的元素複製到另一串行
rotate() 將[first,mid)[mid,end)元素對調
rotate_copy() 將rotate()後的序列複製到另一串行
next_permutation() 得到元素的下一排列次序(並判斷是否是全排列)
prev_permutation() 得到元素的下一排列次序(並判斷是否是全排列)
shuffle() 傳遞隨機數引擎將區間元素隨機排序
random_shuffle() 將區間元素隨機打亂
partition() 將符合某準則的移到前面
stable_partition() 將符合某準則的移到前面並保持穩定性
partition_copy() 將符合準則的複製到序列1,不符合的複製到序列2
#include
#include
#include
#include
#include
using
namespace
std;
// 1. reverse() 將元素次序逆轉
// 2. reverse_copy() 將逆序的元素複製到另一串行
// 3. rotate() 將[first,mid)[mid,end)元素對調
// 4. rotate_copy() 將rotate()後的序列複製到另一串行
// 5. next_permutation() 得到元素的下一排列次序(並判斷是否是全排列)
// 6. prev_permutation() 得到元素的下一排列次序(並判斷是否是全排列)
// 7. shuffle() 傳遞隨機數引擎將區間元素隨機排序
// 8. random_shuffle() 將區間元素隨機打亂
// 9. partition() 將符合某準則的移到前面
// 10 stable_partition() 將符合某準則的移到前面並保持穩定性
// 11.partition_copy() 將符合準則的複製到序列1,不符合的複製到序列2
void test()
; reverse(vec.begin(), vec.end());
for (auto &v : vec)
cout
<< v << ends;
cout
<< endl;
//2vector
a;reverse_copy(vec.begin(), vec.end(), back_inserter(a));
for (auto &v : a)
cout
<< v << ends;
cout
<< endl;
//3rotate(a.begin(), a.begin() + 4, a.end());
for (auto &v : a)
cout
<< v << ends;
cout
<< endl;
//4vector
b;rotate_copy(a.begin(), a.begin() + 3, a.end(), back_inserter(b));
for (auto &v : b)
cout
<< v << ends;
cout
<< endl;
vector
c;int count = 0;
//5while (next_permutation(c.begin(), c.end()))
++count;
//6//prev_permutation(c.begin(), c.end());
for (auto &v : c)
cout
<< v << ends;
cout
<< endl << count << endl;
//7static default_random_engine e;
shuffle(a.begin(), a.end(),e);
for (auto &v : a)
cout
<< v << ends;
cout
<< endl;
//8random_shuffle(a.begin(), a.end());
for (auto &v : a)
cout
<< v << ends;
cout
<< endl;
auto f = (const
int& v)
;//9
auto partpos = partition(a.begin(), a.end(), f);
if (partpos != a.end())
for (auto &v : a)
cout
<< v << ends;
//10
auto spos = stable_partition(b.begin(), b.end(), f);
if (spos != b.end())
for (auto &v : b)
cout
<< v << ends;
cout
<< endl;
vector
d;vector
g;//11
partition_copy(b.begin(), b.end(), back_inserter(d),back_inserter(g), f);
for (auto &v : d)
cout
<< v << ends;
cout
<< endl;
for (auto &v :g)
cout
<< v << ends;
cout
<< endl;
}int main()
STL 變序類演算法
前言 所謂變序類演算法,就是在乙個容器裡面,把原有的順序改變,在這裡主要是介紹幾個演算法,reverse翻轉,rotate旋轉次序以及random shuffle隨機化打亂順序。reverse template class bidirectionaliterator void reverse bid...
STL示例05 泛型演算法
stl示例 泛型演算法find if include include include include include using namespace std define vsize 24 vectorv vsize void initialize long ri void show const l...
STL 常用演算法(三)排序演算法
演算法簡介 功能描述 函式原型 include include void myprint int val void test01 intmain 函式原型 include include include class myprint void test01 for each v.begin v.end...