C++STL之整理算法
这里主要介绍颠倒、旋转、随机排列和分类4中常见的整理算法
1、颠倒(反转)
void reverse(_BidIt _First, _BidIt _Last)
_OutIt reverse_copy(_BidIt _First, _BidIt _Last,_OutIt _Dest)
2、旋转
_FwdIt rotate(_FwdIt _First, _FwdIt _Mid, _FwdIt _Last)
_OutIt rotate_copy(_FwdIt _First, _FwdIt _Mid, _FwdIt _Last,_OutIt _Dest)
交换[_First, _Mid)和[_Mid, _Last)的位置
3、随机排列
void random_shuffle(_RanIt _First, _RanIt _Last, _Fn1& _Func)
4、分类(注意分类算法需要写一个分类标准的结构体,需要继承STL的函数对象uniry_function或binary_function)
_BidIt partition(_BidIt _First, _BidIt _Last, _Pr _Pred)
_BidIt stable_partition(_BidIt _First, _BidIt _Last, _Pr _Pred)
将迭代器区间内的数据分成两部分,符合标准的数据将放在的迭代器区间的前面部分,不符合标准的放在迭代器的后半部分
1 #include<iostream> 2 #include<algorithm> 3 #include<functional> 4 using namespace std; 5 void print(int *num,int n) 6 { 7 for(int i=0;i<n;i++) 8 { 9 cout<<num[i]<<' '; 10 } 11 cout<<endl; 12 } 13 int main() 14 { 15 int num[10]={1,2,4,5,7,3,4}; 16 print(num,7); 17 //void reverse(_BidIt _First, _BidIt _Last) 18 reverse(num,num+7); 19 print(num,7); 20 int num_r_copy[7]; 21 //_OutIt reverse_copy(_BidIt _First, _BidIt _Last,_OutIt _Dest) 22 reverse_copy(num,num+7,num_r_copy); 23 print(num,7); 24 print(num_r_copy,7); 25 26 27 //_FwdIt rotate(_FwdIt _First, _FwdIt _Mid, _FwdIt _Last) 28 //交换[_First, _Mid)和[_Mid, _Last)的位置 29 print(num,7); 30 rotate(num,num+1,num+7); 31 print(num,7); 32 33 rotate(num,num+2,num+5); 34 print(num,7); 35 //rotate_copy 36 //_OutIt rotate_copy(_FwdIt _First, _FwdIt _Mid, _FwdIt _Last,_OutIt _Dest) 37 //不改变原数组,将旋转好的数组放在新的数组里 38 39 //随机排列 40 //void random_shuffle(_RanIt _First, _RanIt _Last, _Fn1& _Func) 41 random_shuffle(num,num+7); 42 print(num,7); 43 44 //分类 45 //注意分类算法是需要写一个分类标准的函数的,所以需要用到写一个新的结构体或者类来继承STL函数,并且重载()运算符 46 //partition、stable_partition 47 //_BidIt partition(_BidIt _First, _BidIt _Last, _Pr _Pred) 48 //将迭代器区间内的数据分成两部分,符合标准的数据将放在的迭代器区间的前面部分,不符合标准的放在迭代器的后半部分 49 struct iseven :public unary_function<int,bool> 50 { 51 bool operator()(int val)//重载()运算符 52 { 53 return val%2==0;//判断是否为偶数 54 } 55 }; 56 int ynum1[10]={1,2,3,4,5,6,7,8,9,10}; 57 print(ynum1,10); 58 partition(ynum1,ynum1+10,iseven()); 59 print(ynum1,10); 60 61 int ynum2[10]={1,2,3,4,5,6,7,8,9,10}; 62 print(ynum2,10); 63 stable_partition(ynum2,ynum2+10,iseven()); 64 print(ynum2,10); 65 return 0; 66 }
转载于:https://www.cnblogs.com/bewolf/p/4424994.html
C++STL之整理算法相关推荐
- 垃圾回收器机制(二):快速解读GC算法之标记-清除,复制及标记整理-算法
标记/清除算法 它的做法是当堆中的有效内存空间(available memory)被耗尽的时候,就会停止整个程序(也被成为stop the world),然后进行两项工作,第一项则是标记,第二项则是清 ...
- Data Structures with C++ Using STL Chapter 3算法概述---笔记
<Data Structures with C++ Using STL Chapter 3算法概述---笔记>,作者:茉莉花茶,原文链接:http://www.cnblogs.com/yc ...
- stl非变易算法(二)
这里接着上篇stl非变易算法(一)进行总结.主要解析算法函数count.count_if.mismatch.equal.search.search_n以及find_end.给出算法函数的实现及測试用例 ...
- 【Java 虚拟机原理】垃圾回收算法 ( 标记-清除算法 | 复制算法 | 标记-整理算法 )
文章目录 总结 一.标记-清除算法 二.复制算法 三.标记-整理算法 总结 常用的垃圾回收算法 : 标记-清除算法 ; 复制算法 ; 标记-整理算法 ; 这些算法没有好坏优劣之分 , 都有各自的 优势 ...
- C++ STL 常用查找算法
C++ STL 常用查找算法 adjacent_find() 在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器.否则返回past-the-end. ...
- C++ STL 常用遍历算法
C++ STL 常用遍历算法 STL的容器算法迭代器的设计理念 1) STL的容器通过类模板技术,实现数据类型和容器模型的分离 2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供 ...
- C++STL常用集合算法
C++STL常用集合算法 学习目标 算法简介 set_intersection 功能描述 函数原型 示例 总结 set_union 功能描述 函数原型 示例 总结 set_difference 功能描 ...
- C++STL常用排序算法
C++STL常用排序算法 学习目标 算法简介 sort 功能描述 函数原型 示例 总结 random_shuffle 功能描述 函数原型 示例 总结 merge 功能描述 函数原型 示例 总结 rev ...
- C++STL常用查找算法
C++STL常用查找算法 学习目标 算法简介 find 功能描述 函数原型 示例 总结 find_if 功能描述 函数原型 示例 总结 adjacent_find 功能描述 函数原型 示例 总结 bi ...
- C++STL常用遍历算法
C++STL常用遍历算法 概述 学习目标 算法简介 for_each 功能描述 函数原型 示例 总结 transform 功能描述 函数原型 示例 总结 概述 算法主要是由头文件<algorit ...
最新文章
- Matlab入门笔记
- lanmp环境的搭建
- android152 笔记 2
- c++STL之vector简易使用
- 100个LINUX站点
- 《机器学习实战》chapter05 Logistic回归
- Play! Framework 系列(三):依赖注入
- 斐波那契数列与阶乘---递归实现
- 前端学习(310):清除浮动的方法
- Apache会比路虎的应急效果更好
- Android知识体系框架
- Nginx 二级子域名完美方案
- java 局部变量垃圾回收_java局部变量对垃圾回收的影响
- 27. 二叉搜索树与双向链表(C++版本)
- VS C++ def
- 账龄分析表excel模板_华为财务EXCEL内训手册(共131套模板,带公式).xls
- 五大主流浏览器的介绍
- tdk磁材手册_TDK磁性材料市场.ppt
- 在线轻松制作微信公众号封面次图的方法
- 2020CVPR对抗样本相关论文整理(无开源代码)