博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL学习笔记--变易算法
阅读量:6293 次
发布时间:2019-06-22

本文共 20693 字,大约阅读时间需要 68 分钟。

变易算法

    C++ STL 的变易算法 (Mutating algorithms) 是一组能够修改容器元素数据的模板函数,可进行序列数据的复制、交换、替换、填充、移除、旋转、随机抖动和分割。这些算法对迭代器有较高的要求,具体的迭代器类型随各个算法而定,或前向迭代器、或双向迭代器、又或者是随机迭代器,以提供算法所需要的迭代器操作。应用变易算法时,先要检查容器的迭代器是否符合要求,防止产生编译错误。

目录:   

                                                                  

                                                       

                                                                            

                                                                    

                                                    

                                                               

                                            

                                                                        

                                                              

 

  

应用 copy 算法复制向量vector元素链表到链表 list
1 /*    下面示例程序将向量{1  3  5},拷贝到链表{2 4 6 8 10}的首元素开始位置,结果链表的前3个元素被拷贝覆盖掉,打印输出为“1 3 5 8 10” 2 */ 3 ----------------------------------------------- 应用 copy 算法复制向量vector元素链表到链表 list 4 #include 
5 #include
6 #include
7 #include
8 using namespace std; 9 10 void print(int x)11 {12 cout << x << " ";13 }14 15 int main()16 {17 // 初始化向量v18 vector
v;19 v.push_back(1);20 v.push_back(3);21 v.push_back(5);22 23 // 初始化双向链表l24 list
l;25 l.push_back(2);26 l.push_back(4);27 l.push_back(6);28 l.push_back(8);29 l.push_back(10);30 31 // 复制v到l32 copy(v.begin(), v.end(), l.begin());33 34 // 打印链表l中的元素35 for_each(l.begin(), l.end(), print);36 cout << endl;37 38 return 0;39 }

 

 

 

应用 copy_backward 算法在同一个向量vector中进行复制
1 /*    下面示例程序将{1 2 3 4 5 6 7 8 9 10}向量的前3个元素复制到后面3个元素中,打印输出为“1 2 3 4 5 6 7 1 2 3 ”,与采用 copy 算法复制的打印输出完全相同,只是元素的复制顺序不同 2 */ 3 ----------------------------------------------- 应用 copy_backward 算法在同一个向量vector中进行复制 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << ' ';12 }13 14 int main()15 {16 vector
v(10);17 // 初始化复制18 for (unsigned int i=0; i

 

 

 

应用 swap 算法交换两个整型变量
1 /*    下面示例程序将整数 a=5 和 b=26 交换,结果当然为 a=26 和 b=5 2 */ 3 ----------------------------------------------- 应用 swap 算法交换两个整型变量 4 #include 
5 #include
6 using namespace std; 7 int main() 8 { 9 int a = 5;10 int b = 26;11 cout << "交换前" << "a = " << a << " b = " << b << endl << endl;12 // 交换13 swap(a,b);14 cout << "交换后" << "a = " << a << " b = " << b << endl;15 16 return 0;17 }

 

 

 

应用 iter_swap 算法交换两个整型变量
1 /*    下面示例程序简单地讲标准整数类型的 a 和 b,调用 iter_swap 算法进行交换 2 */ 3 -----------------------------------------------  4 #include 
5 #include
6 using namespace std; 7 int main() 8 { 9 int a = 5;10 int b = 6;11 cout << "交换前 a=" << a << ", b=" << b << endl << endl;12 // 交换13 iter_swap(&a, &b);14 cout << "交换后 a=" << a << ", b=" << b << endl << endl;15 16 return 0;17 }

 

 

 

应用 swap_ranges 算法交换两个 vector 容器元素
1 /*    下面示例程序将两个向量容器 v1 和 v2 的元素交换,打印输出为“交换前,v1=1 3 5  v2=2 4 6交换后,v1=2 4 6  v2=1 3 5” 2 */ 3 ----------------------------------------------- 应用 swap_ranges 算法交换两个 vector 容器元素 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 int main()15 {16 vector
v1, v2;17 v1.push_back(1);18 v1.push_back(3);19 v1.push_back(5);20 v2.push_back(2);21 v2.push_back(4);22 v2.push_back(6);23 24 // 打印v1, v225 cout << "交换前, v1= ";26 for_each(v1.begin(), v1.end(), print);27 cout << endl;28 29 cout << "交换前, v2= ";30 for_each(v2.begin(), v2.end(), print);31 cout << endl;32 33 // 交换 v1, v234 swap_ranges(v1.begin(), v1.end(), v2.begin());35 36 // 打印 v1, v237 cout << endl;38 cout << "交换后, v1= ";39 for_each(v1.begin(), v1.end(), print);40 cout << endl;41 42 cout << "交换后, v2= ";43 for_each(v2.begin(), v2.end(), print);44 cout << endl;45 46 return 0;47 }

 

 

 

应用 transform 算法对 vector 容器元素进行平方计算
1 /*    下面示例程序将向量 v 的元素 5、15和25,执行平方变换,结果放入双向链表l 中,打印输出为“25 225 625” 2 */ 3 ----------------------------------------------- 应用 transform 算法对 vector 容器元素进行平方计算 4 #include 
5 #include
6 #include
7 #include
8 using namespace std; 9 10 int square(int x)11 {12 return x*x;13 }14 15 void print(int x)16 {17 cout << x << " ";18 }19 20 int main()21 {22 // vector 初始化23 vector
v;24 v.push_back(5);25 v.push_back(15);26 v.push_back(25);27 28 // list 初始化29 list
l(3);30 31 // 对vector容器元素执行平方运算,放入 list 容器32 transform(v.begin(), v.end(), l.begin(), square);33 34 // 打印链表元素35 for_each(l.begin(), l.end(), print);36 cout << endl;37 38 return 0;39 }

 

 

 

应用 replace 算法替换向量和数组元素
1 /*    下面示例程序先将变量 v={13, 25, 27, 25, 29} 的元素25替换为 100,然后,再将数组 iArray[]={3, 6, 5, 9, 5, 5, 10}的元素5替换为200,打印"v向量元素:13 100 27 100 29   数组iArray元素:3 6 200 9 200 200 10" 2 */ 3 ----------------------------------------------- 应用 replace 算法替换向量和数组元素 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 int main()15 {16 vector
v;17 v.push_back(13);18 v.push_back(25);19 v.push_back(27);20 v.push_back(25);21 v.push_back(29);22 23 // 将v的25全部替换为10024 replace(v.begin(), v.end(), 25, 100);25 cout << "v向量元素:";26 for_each(v.begin(), v.end(), print);27 cout << endl;28 29 // 将iArray的5全部替换为20030 int iArray[7] = {
3, 6, 5, 9, 5, 5, 10};31 replace(iArray, iArray+7, 5, 200);32 cout << "数组iArray元素:";33 for_each(iArray, iArray+7, print);34 cout << endl;35 36 return 0;37 }

 

 

 

应用 replace_if 算法替换向量中奇数值的元素
1 /*    下面示例程序将向量 v={0, 1, 2, 3, 4, 5, 6, 0, 1, 2}的奇数元素替换为新值38,打印输出为“0 38 2 38 4 38 6 0 38 2” 2 */ 3 ----------------------------------------------- 应用 replace_if 算法替换向量中奇数值的元素 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 bool odd(int x)10 {11 return x % 2;12 }13 14 int main()15 {16 vector
v(10);17 unsigned int i;18 for (i=0; i

 

 

 

应用 replace_copy 算法将值为1的元素替换后拷贝到新容器
1 /*    下面的示例程序将链表l1={1, 3, 1, 6, 8}中值为1 的元素替换为100后,拷贝到链表l2中。打印输出为“l1保持不变:1 3 1 6 8   l2元素为:100 3 100 6 8” 2 */ 3 ----------------------------------------------- 应用 replace_copy 算法将值为1的元素替换后拷贝到新容器 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 int main()15 {16 list
l1;17 l1.push_back(1);18 l1.push_back(3);19 l1.push_back(1);20 l1.push_back(6);21 l1.push_back(8);22 23 // 将l1链表元素1替换为 100,然后拷贝到l2链表24 list
l2(5);25 replace_copy(l1.begin(), l1.end(), l2.begin(), 1, 100);26 cout << "l1 保持不变:";27 for_each(l1.begin(), l1.end(), print);28 cout << endl;29 cout << "l2 元素为:";30 for_each(l2.begin(), l2.end(), print);31 cout << endl;32 33 return 0;34 }

 

 

 

应用 replace_copy_if 算法将奇数元素替换后拷贝到新容器
1 /*    下面示例程序将向量 v={0, 1, 2, 3, 4, 5, 6, 0, 1, 2}中奇数值元素替换为38,然后拷贝到链表l中,链表的打印输出为“0 38 2 38 4 38 6 0 38 2”,向量v的元素不变 2 */ 3 ----------------------------------------------- 应用 replace_copy_if 算法将奇数元素替换后拷贝到新容器 4 #include 
5 #include
6 #include
7 #include
8 using namespace std; 9 10 bool odd(int x)11 {12 return x % 2;13 }14 15 int main()16 {17 vector
v(10);18 unsigned int i;19 for (i=0; i
l(10);28 replace_copy_if(v.begin(), v.end(), l.begin(), odd, 388);29 list
::iterator list_iter;30 for (list_iter=l.begin(); list_iter!=l.end(); ++list_iter)31 cout << *list_iter << " ";32 cout << endl;33 34 return 0;35 }

 

 

 

应用 fill 算法容器填充向量容器
1 /*    下面示例程序将向量的5个元素的值全部填充为30,打印输出为“30 30 30 30 30 ” 2 */ 3 ----------------------------------------------- 应用 fill 算法容器填充向量容器 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 int main()15 {16 vector
v(5);17 fill(v.begin(), v.end(), 30);18 for_each(v.begin(), v.end(), print);19 cout << endl;20 21 return 0;22 }

 

 

 

应用 fill_n 算法填充向量容器
1 /*    下面示例程序将向量v的前5个元素填充为2,打印输出为“2 2 2 2 2 1 1 1 ”。然后再全部填充为3,打印输出“3 3 3 3 3 3 3 3 ” 2 */ 3 ----------------------------------------------- 应用 fill_n 算法填充向量容器 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 int main()15 {16 vector
v(8);17 fill(v.begin(), v.end(), 1);18 19 // 前5个元素填充为220 fill_n(v.begin(), 5, 2);21 for_each(v.begin(), v.end(), print);22 cout << endl;23 24 // 全部为325 fill_n(v.begin(), v.size(), 3);26 for_each(v.begin(), v.end(), print);27 cout << endl;28 29 return 0;30 }

 

 

 

应用 generate 算法将一个数列生成到向量容器
1 /*    下面示例程序定义了一个 sequence 类,构造出等差数列 ,然后调用generate算法,将等差数列写入向量容器V,打印输出为“3 6 9 12 15 18 21 24 27 30” 2 */ 3 ----------------------------------------------- 应用 generate 算法将一个数列生成到向量容器 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 // 等差数列 an+1=an+310 class sequence11 {12 public:13 int a;14 sequence(){a=0;}15 inline int operator()()16 {17 a = a + 3;18 return a;19 }20 };21 22 void print(int x)23 {24 cout << x << " ";25 }26 27 int main()28 {29 vector
v(10);30 sequence an;31 generate(v.begin(), v.end(), an);32 for_each(v.begin(), v.end(), print);33 cout << endl;34 35 return 0;36 }

 

 

 

应用 generate_n 算法将3个伪随机数生成到向量容器
1 /*    下面示例程序使用C标准函数 rand,将3个伪随机数生成到向量容器v中,打印输出。 2 */ 3 ----------------------------------------------- 应用 generate_n 算法将3个伪随机数生成到向量容器 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 int main()10 {11 vector
v(10);12 // 生成3个伪随机数13 generate_n(v.begin(), 3, rand);14 for (unsigned int i=0; i

 

 

 

应用 remove_copy 算法将向量容器不包含4的元素拷贝到数组
1 /*    下面示例程序将向量 v={2, 4, 3, 4, 8}中不等于4的元素复制到数组iArray,v的打印输出为“2, 4, 3, 4, 8”,维持不变;iArray数组的打印输出为"2 3 8 0 0 0",已不包含值为4的元素 2 */ 3 ----------------------------------------------- 应用 remove_copy 算法将向量容器不包含4的元素拷贝到数组 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 int main()14 {15 vector
v;16 v.push_back(2);17 v.push_back(4);18 v.push_back(3);19 v.push_back(4);20 v.push_back(8);21 22 // 初始化数组23 int iArray[6] = {
0};24 25 // 移|除 复制,v不变,26 remove_copy(v.begin(), v.end(), iArray, 4);27 for_each(v.begin(), v.end(), print);28 cout << endl;29 30 // 打印数组31 for_each(iArray, iArray+6, print);32 cout << endl;33 34 return 0;35 }

 

 

 

应用 remove_copy_if 算法将向量容器中奇数元素拷贝到数组
1 /*    下面示例程序将向量v={7, 2, 5, 4, 1}中不是偶数的元素复制到数组iArray,v 的打印输出为“7, 2, 5, 4, 1”维持不变;iArray数组的打印输出为"7 5 1 0 0 0" 2 */ 3 ----------------------------------------------- 应用 remove_copy_if 算法将向量容器中奇数元素拷贝到数组 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 bool even(int x)15 {16 return x % 2 ? 0 : 1;17 }18 19 int main()20 {21 vector
v;22 v.push_back(7);23 v.push_back(2);24 v.push_back(5);25 v.push_back(4);26 v.push_back(1);27 28 // 初始化数组29 int iArray[6]={
0};30 31 // 移除 v 中偶数,剩余元素32 remove_copy_if(v.begin(), v.end(), iArray, even);33 34 // 打印v, v 没有变35 for_each(v.begin(), v.end(), print);36 cout << endl << endl;37 38 // 打印iArray39 for_each(iArray, iArray+6, print);40 cout << endl;41 42 43 return 0;44 }

 

 

 

应用 remove 算法将向量容器中的某值元素移除
1 /*    下面示例程序将向量容器v={2, 4, 3, 4, 8}中元素4全部移除掉,于是,迭代区间[first, result)的元素为{2, 3, 8},没有元素等于4.而v变为{2, 3, 8, 4, 8},前面3个元素就是复制过去的,后面的两个元素(包括4)是原向量中的元素(这里需要仔细思考了) 2 */ 3 ----------------------------------------------- 应用 remove 算法将向量容器中的某值元素移除 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 int main()15 {16 // 初始化向量 v17 vector
v;18 v.push_back(2);19 v.push_back(4);20 v.push_back(3);21 v.push_back(4);22 v.push_back(8);23 24 // 移除425 vector
::iterator result = remove(v.begin(), v.end(), 4);26 27 // 打印 2 3 828 for_each(v.begin(), result, print);29 cout << endl << endl;30 31 // 打印 4 832 for_each(result, v.end(), print);33 cout << endl << endl;34 35 // 打印 2 3 8 4 836 for_each(v.begin(), v.end(), print);37 cout << endl;38 39 return 0;40 }

 

 

 

应用 remove_if 算法将向量容器中偶数移除
1 /*    下面示例程序将向量 v={7, 2, 5, 4, 1}中偶数移除,结果迭代器区间[first, result)的元素为{7, 5, 1};而向量v={7, 5, 1, 4, 1},后面两个元素{4, 1}是v保留下来的元素。 2 */ 3 ----------------------------------------------- 应用 remove_if 算法将向量容器中偶数移除 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 // 偶数15 bool even(int x)16 {17 return x % 2 ? 0 : 1;18 }19 20 int main()21 {22 // 初始化向量v23 vector
v;24 v.push_back(7);25 v.push_back(2);26 v.push_back(5);27 v.push_back(4);28 v.push_back(1);29 30 // 移除偶数31 vector
::iterator result = remove_if(v.begin(), v.end(), even);32 33 // 打印 7 5 134 for_each(v.begin(), result, print);35 cout << endl << endl;36 37 // 打印 7 5 1 4 138 for_each(v.begin(), v.end(), print);39 cout << endl;40 41 return 0;42 }

 

 

 

应用 unique_copy 算法唯一复制向量容器元素
1 /*    下面示例程序将向量 v={2, 5, 5, 5, 6, 5, 2}中连续3个5的元素剔除两个,复制到iArray数组。打印输出为“2 5 6 5 2 0” 2 */ 3 ----------------------------------------------- 应用 unique_copy 算法唯一复制向量容器元素 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 int main()15 {16 vector
v;17 v.push_back(2);18 v.push_back(5);19 v.push_back(5);20 v.push_back(5);21 v.push_back(6);22 v.push_back(5);23 v.push_back(2);24 25 int iArray[6] = {
0};26 unique_copy(v.begin(), v.end(), iArray);27 28 // 打印 2 5 6 5 2 029 for_each(iArray, iArray+6, print);30 cout << endl;31 32 return 0;33 }

 

 

 

应用 unique 算法剔除向量容器的连续重复元素
1 /*    下面示例程序将向量 v={2, 6, 6, 6, 9, 6, 3}的3个连续元素6剔除(仅保留1个),结果[first, result)元素为{2, 6, 9, 6, 3},而向量v的元素变为{2, 6, 9, 6, 3, 6, 3},最后的两个元素{6, 3}是原来向量容器保留下来的元素 2 */ 3 ----------------------------------------------- 应用 unique 算法剔除向量容器的连续重复元素 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 int main()15 {16 vector
v;17 v.push_back(2);18 v.push_back(6);19 v.push_back(6);20 v.push_back(6);21 v.push_back(9);22 v.push_back(6);23 v.push_back(3);24 vector
::iterator result = unique(v.begin(), v.end());25 26 // 打印 2 6 9 6 327 for_each(v.begin(), result, print);28 cout << endl << endl;29 30 // 打印 2 6 9 6 3 6 3 31 for_each(v.begin(), v.end(), print);32 cout << endl;33 34 return 0;35 }

 

 

 

应用 reverse 算法将向量容器的元素反向排列
1 /*    下面示例程序将向量 v={0, 1, 2, 3, 4, 5, 6, 7, 8, 9},反向排列为 v={9, 8, 7, 6, 5, 4, 3, 2, 1, 0} 2 */ 3 ----------------------------------------------- 应用 reverse 算法将向量容器的元素反向排列 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 int main()15 {16 vector
v(10);17 for (size_t i=0; i

 

 

 

应用 reverse_copy 算法反向复制向量容器元素到数组
1 /*    下面示例程序将向量 v={0, 1, 2, 3, 4, 5, 6, 7, 8, 9},反向复制到数组iArray,打印iArray为“9 8 7 6 5 4 3 2 1 0” 2 */ 3 ----------------------------------------------- 应用 reverse_copy 算法反向复制向量容器元素到数组 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 int main()15 {16 vector
v(10);17 for(size_t i=0; i

 

 

 

应用 rotate 算法旋转向量容器元素
1 /*    下面示例程序旋转向量容器 v={1, 2, 3, 4, 5, 6, 7, 8, 9, 10},middle支点选为整数8,旋转后打印输出为“8 9 10 1 2 3 4 5 6 7 ” 2 */ 3 ----------------------------------------------- 应用 rotate 算法旋转向量容器元素 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 int main()15 {16 vector
v(10);17 for (size_t i=0; i

 

 

 

应用 rotate_copy 算法旋转复制向量容器元素到数组
1 /*    下面示例程序旋转复制向量容器 v={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}到数组iArray,middle支点选为整数8,iArray的打印输出为“8 9 10 1 2 3 4 5 6 7 ” 2 */ 3 ----------------------------------------------- 应用 rotate_copy 算法旋转复制向量容器元素到数组 4 #include 
5 #include
6 #include
7 using namespace std; 8 9 void print(int x)10 {11 cout << x << " ";12 }13 14 int main()15 {16 vector
v(10);17 for(size_t i=0; i

 

 

 

应用 random_shuffle 算法随机抖动向量容器的元素
1 /*    对容器内的元素进行随机的排序 2 */ 3 ----------------------------------------------- 应用 random_shuffle 算法随机抖动向量容器的元素 4 #include 
5 #include
6 using namespace std; 7 8 void print(int x) 9 {10 cout << x << " ";11 }12 13 int main()14 {15 int iArray[10] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10};16 cout << "随机抖动iArray三次" << endl;17 for (int i=0; i<3; i++)18 {19 random_shuffle(iArray, iArray+10);20 for_each(iArray, iArray+10, print);21 cout << endl << endl;22 }23 24 return 0;25 }

 

 

 

应用 partition 算法分割数组
1 /*    下面示例程序将数组 iArray={16, -1, 3, 11, 2, 5, 8, 20, 9, 3},分割成小于10和不小于10两部分。 2 */ 3 ----------------------------------------------- 应用 partition 算法分割数组 4 #include 
5 #include
6 using namespace std; 7 8 void print(int x) 9 {10 cout << x << " ";11 }12 13 // 小于1014 bool less10(int x)15 {16 return x < 10 ? 1 : 0 ;17 }18 19 int main()20 {21 int iArray[10] = {
16, -1, 3, 11, 2, 5, 8, 20, 9, 3};22 int *result = partition(iArray, iArray+10, less10);23 cout << "按小于10进行分割: " << endl;24 for_each(iArray, iArray+10, print);25 cout << endl;26 cout << "partition算法返回的分界元素为:" << *result << endl;27 28 return 0;29 }

 

 

 

应用 stable_partition 算法稳定分割数组
1 /*    下面示例程序,将数组iArray 稳定分割为小于10 和不小于10两部分。 2 */ 3 ----------------------------------------------- 应用 stable_partition 算法稳定分割数组 4 #include 
5 #include
6 using namespace std; 7 8 void print(int x) 9 {10 cout << x << " ";11 }12 13 bool less10(int x)14 {15 return x < 10 ? 1 : 0;16 }17 18 int main()19 {20 int iArray[10] = {
16, -1, 3, 11, 2, 5, 8, 20, 9, 3};21 for_each(iArray, iArray+10, print);22 cout << endl << endl;23 24 // 进行稳定分割25 int *result = stable_partition(iArray, iArray+10, less10);26 cout << "按小于10稳定分割,iArray数组变为:"<< endl;27 for_each(iArray, iArray+10, print);28 cout << endl << endl;29 30 cout << "iArray 数组有如下小于10 的整数: " << endl;31 for_each(iArray, result, print);32 cout << endl;33 34 cout << "stable_partition算法返回的分界元素为:" << *result << endl;35 36 return 0;37 }

 

 

 

 

 

------------------------- 变易算法小结
    在C++ STL 算法库中,收集了一些会使操作数发生改变的常用算法,称为变易算法。
    包括元素复制 copy/copy_backward 算法
    两元素交换的 swap/iter_swap/swap_ranges 算法
    进行元素变换的 transform 算法
    元素替换处理的 replace/replace_if/replace_copy/replace_copy_if 算法
    填充元素值的 fill/fill_n 算法
    生成随机元素值的 generate/generate_n 算法
    移除处理的 remove_copy/remove_copy_if/remove/remove_if 算法
    剔除重复元素的 unique_copy/unique 算法
    反向处理的 reverse/reverse_copy 算法
    旋转处理的 rotate/totate_copy 算法
    随机抖动的 random_shuffle 算法
    容器分割的 partition/stable_partition 算法
 ===========================分享一个文件:======================

 

转载于:https://www.cnblogs.com/music-liang/archive/2013/04/15/3021463.html

你可能感兴趣的文章
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>
jQuery的validate插件
查看>>
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>
Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
(转)第三方支付参与者
查看>>
程序员修炼之道读后感2
查看>>
DWR实现服务器向客户端推送消息
查看>>
js中forEach的用法
查看>>
Docker之功能汇总
查看>>
!!a标签和button按钮只允许点击一次,防止重复提交
查看>>
(轉貼) Eclipse + CDT + MinGW 安裝方法 (C/C++) (gcc) (g++) (OS) (Windows)
查看>>
还原数据库
查看>>
作业调度框架 Quartz.NET 2.0 beta 发布
查看>>