这里主要介绍颠倒、旋转、随机排列和分类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)

将迭代器区间内的数据分成两部分,符合标准的数据将放在的迭代器区间的前面部分,不符合标准的放在迭代器的后半部分

 #include<iostream>
#include<algorithm>
#include<functional>
using namespace std;
void print(int *num,int n)
{
for(int i=;i<n;i++)
{
cout<<num[i]<<' ';
}
cout<<endl;
}
int main()
{
int num[]={,,,,,,};
print(num,);
//void reverse(_BidIt _First, _BidIt _Last)
reverse(num,num+);
print(num,);
int num_r_copy[];
//_OutIt reverse_copy(_BidIt _First, _BidIt _Last,_OutIt _Dest)
reverse_copy(num,num+,num_r_copy);
print(num,);
print(num_r_copy,); //_FwdIt rotate(_FwdIt _First, _FwdIt _Mid, _FwdIt _Last)
//交换[_First, _Mid)和[_Mid, _Last)的位置
print(num,);
rotate(num,num+,num+);
print(num,); rotate(num,num+,num+);
print(num,);
//rotate_copy
//_OutIt rotate_copy(_FwdIt _First, _FwdIt _Mid, _FwdIt _Last,_OutIt _Dest)
//不改变原数组,将旋转好的数组放在新的数组里 //随机排列
//void random_shuffle(_RanIt _First, _RanIt _Last, _Fn1& _Func)
random_shuffle(num,num+);
print(num,); //分类
//注意分类算法是需要写一个分类标准的函数的,所以需要用到写一个新的结构体或者类来继承STL函数,并且重载()运算符
//partition、stable_partition
//_BidIt partition(_BidIt _First, _BidIt _Last, _Pr _Pred)
//将迭代器区间内的数据分成两部分,符合标准的数据将放在的迭代器区间的前面部分,不符合标准的放在迭代器的后半部分
struct iseven :public unary_function<int,bool>
{
bool operator()(int val)//重载()运算符
{
return val%==;//判断是否为偶数
}
};
int ynum1[]={,,,,,,,,,};
print(ynum1,);
partition(ynum1,ynum1+,iseven());
print(ynum1,); int ynum2[]={,,,,,,,,,};
print(ynum2,);
stable_partition(ynum2,ynum2+,iseven());
print(ynum2,);
return ;
}

C++STL之整理算法的更多相关文章

  1. JVM内存管理------GC算法精解(复制算法与标记/整理算法)

    本次LZ和各位分享GC最后两种算法,复制算法以及标记/整理算法.上一章在讲解标记/清除算法时已经提到过,这两种算法都是在此基础上演化而来的,究竟这两种算法优化了之前标记/清除算法的哪些问题呢? 复制算 ...

  2. stl非变易算法(二)

    这里接着上篇stl非变易算法(一)进行总结.主要解析算法函数count.count_if.mismatch.equal.search.search_n以及find_end.给出算法函数的实现及測试用例 ...

  3. STL非变易算法 - STL算法

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1394600460.html 原创:ST ...

  4. JVM之GC算法、垃圾收集算法——标记-清除算法、复制算法、标记-整理算法、分代收集算法

    标记-清除算法 此垃圾收集算法分为“标记”和“清除”两个阶段: 首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记对象,它的标记过程前面已经说过——如何判断对象是否存活/死去 死去的对象就会 ...

  5. STL用法整理

    百度百科 STL是Standard Template Library的简称,中文名标准模板库,惠普实验室开发的一系列软件的统称.从根本上说,STL是一些“容器”的集合,这些“容器”有list,vect ...

  6. C++ STL 常用排序算法

    C++ STL 常用排序算法 merge() 以下是排序和通用算法:提供元素排序策略 merge: 合并两个有序序列,存放到另一个序列. 例如: vecIntA,vecIntB,vecIntC是用ve ...

  7. C++ STL 常用查找算法

    C++ STL 常用查找算法 adjacent_find() 在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器.否则返回past-the-end. ...

  8. C++ STL 常用遍历算法

    C++ STL 常用遍历算法 STL的容器算法迭代器的设计理念 1) STL的容器通过类模板技术,实现数据类型和容器模型的分离 2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供了 ...

  9. JVM内存管理之GC算法精解(复制算法与标记/整理算法)

    本次LZ和各位分享GC最后两种算法,复制算法以及标记/整理算法.上一章在讲解标记/清除算法时已经提到过,这两种算法都是在此基础上演化而来的,究竟这两种算法优化了之前标记/清除算法的哪些问题呢? 复制算 ...

随机推荐

  1. vs2010旗舰版后,运行调试一个项目时调试不了,提示的是:无法使用“pc”附加到应用程序“webdev.webserver40.exe(PID:2260”

    具体问题描述: vs2010旗舰版后,运行调试一个项目时调试不了,能编译,按ctrl+f5 可以运行,但是就是调试就不行,提示的是:无法使用“pc”附加到应用程序“webdev.webserver40 ...

  2. phpcms v9后台登陆验证码无法显示,怎么取消验证码

    phpcms v9后台登陆验证码无法显示论坛里关于这个问题貌似一直没有解决,查看源代码后发现,关键一点是获取验证码的图片与全局变量SITE_URL相关,也就是网站的目录, 所以只要修改cache/co ...

  3. 【转】jquery-取消冒泡

    转自:http://blog.163.com/css_mm/blog/static/209182176201262665157634/ 1.通过返回false来取消默认的行为并阻止事件起泡. jQue ...

  4. 《C++Primer》复习——with C++11 [4]

    考虑到STL的掌握主要靠的是练习,所以对于STL这部分,我把书中的练习都做一遍,加深印象.这些练习是第9.10.11.17章的,分别是顺序容器.泛型算法和关联容器等. ——10月22日 /*----- ...

  5. div 布局

    转:http://blog.csdn.net/mercop/article/details/7882000 HTML CSS + DIV实现整体布局 1.技术目标: 开发符合W3C标准的Web页面 理 ...

  6. ios 框架学习笔记

    ios主要的系统层次: 一.Cocoa Touch 层:创建应用程序主要使用的框架. 1.关键技术: AirDrop:实现应用间通信. Text Kit:处理文本和排版. UIKit Dynamics ...

  7. POJ 1680 Fork() Makes Trouble

    原题链接:http://poj.org/problem?id=1680 对这道题,我只能说:我不知道题目是什么意思,但是AC还是没有问题的. 看来题目半天没明白fork()怎么个工作,但是看样例(根据 ...

  8. Directx3D SimpleSample Sample

    在d3d 2010 june这个版本里的samples 不知道为什么SimpleSample Sample 这个 它的documents基本等于没有 Starting point for new Di ...

  9. iOS上的jQuery.on()冒泡事件绑定 以及 iOS绝对定位元素中的输入框

    上周遇到两个坑. 一是jQuery的on方法 事件冒泡,在iOS中有问题. $("body").on("click",".contentup" ...

  10. c# 与 Unity3d 中的序列化

    圣典中对于Unity3D的序列化介绍很容易和C#的序列化介绍搞混,做个笔记,方便以后查找. 很多资料算是拾人牙慧. 一.Serializable 序列化 Inherits from Attribute ...