1 adjacent_find

查找重复的元素

2 find_if

查找符合条件的第一个元素

3 find_if_not

查找不符合条件的第一个元素

4 for_each

可以遍历每一个元素

5 partial_sort

部分排序

6 partition

服务于快速排序法的分区

7 prev_permutation

排序

8 random_shuffle

随机排序

9 rotate

旋转

adjacent_find

查找重复的元素

 #include <iostream>
#include <algorithm>
#include <set> void main()
{
std::multiset<int>myset; myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert(); auto it = adjacent_find(myset.begin(), myset.end()); std::cout << *it << std::endl; it = adjacent_find(it++, myset.end()); std::cout << *it << std::endl; it = adjacent_find(it++, myset.end()); std::cout << *it << std::endl;
}

find

 1 #include <iostream>
2 #include <algorithm>
3 #include <vector>
4
5 void main()
6 {
7 std::vector<int>myv;
8
9 myv.push_back(1);
10 myv.push_back(2);
11 myv.push_back(3);
12
13 auto i = find_if(myv.begin(), myv.end(), [](int v)->bool {return v < 4; });//返回第一个小于4的元素
14
15 if (i == myv.end())
16 {
17 std::cout << "not found" << std::endl;
18 }
19 else
20 {
21 std::cout << *i << std::endl;
22 }
23 }

find_if

查找符合条件的第一个元素

 1 #include <iostream>
2 #include <algorithm>
3 #include <vector>
4
5 void main()
6 {
7 std::vector<int>myv;
8
9 myv.push_back(1);
10 myv.push_back(2);
11 myv.push_back(3);
12
13 auto i = find_if(myv.begin(), myv.end(), [](int v)->bool {return v < 4; });//返回第一个小于4的元素
14
15 if (i == myv.end())
16 {
17 std::cout << "not found" << std::endl;
18 }
19 else
20 {
21 std::cout << *i << std::endl;
22 }
23 }

find_if_not

查找不符合条件的第一个元素

 1 #include <iostream>
2 #include <algorithm>
3 #include <vector>
4
5 void main()
6 {
7 std::vector<int>myv;
8
9 myv.push_back(1);
10 myv.push_back(2);
11 myv.push_back(3);
12
13 auto i = find_if_not(myv.begin(), myv.end(), [](int v)->bool {return v < 4; });//返回第一个不是小于4的元素
14
15 if (i == myv.end())
16 {
17 std::cout << "not found" << std::endl;
18 }
19 else
20 {
21 std::cout << *i << std::endl;
22 }
23 }

//[地址](参数) {语句; }

//&res直接操作一个变量,res等价于返回值,x代表参数,每次充当迭代器指向的元素

//不仅仅适用于array,也适用于vector

vector使用for_each

 #include <iostream>
#include <algorithm>
#include <vector>
using namespace std; void main()
{
std::vector<int>myvector;//创建一个数组,数组元素是int类型 myvector.push_back();//尾部插入
myvector.push_back();
myvector.push_back(); int res = ;//保存结果 //[地址](参数) {语句; }
//&res直接操作一个变量,res等价于返回值,x代表参数,每次充当迭代器指向的元素
//不仅仅适用于array,也适用于vector
for_each(myvector.begin(), myvector.end(), [&res](int x) {res += x; }); std::cout << res;//打印 system("pause");
}

普通数组使用for_each

 #include <iostream>
#include <algorithm> struct print
{
void operator ()(int x)//重载()
{
std::cout << x << std::endl;
}
}; void printA(int x)
{
std::cout << x << std::endl;
} int main()
{
int a[] = { ,,,,,,,,, };
int *p = std::find(a, a + , ); std::cout << a << " " << a + << std::endl;
std::cout << *p << std::endl; if (p == a + )
{
printf("没有找到\n");
} std::for_each(a, a + , print());//第三个参数是函数指针,必须是函数类型
std::for_each(a, a + , printA); return ;
}

5 partial_sort

部分排序

 #include <iostream>
#include <algorithm>
#include <string>
#include <vector> struct student
{
public:
std::string name;
int score;
public:
student(std::string str, int num) :name(str), score(num)
{ }
bool operator<(const student &s1)const
{
return this->score < s1.score;
}
}; void main()
{
std::vector<student>ss; {
student s1("AA", );
ss.push_back(s1);
} {
student s1("BB", );
ss.push_back(s1);
} {
student s1("CC", );
ss.push_back(s1);
} {
student s1("DD", );
ss.push_back(s1);
} partial_sort(ss.begin(), ss.begin() + , ss.end()); for (int i = ; i < ; i++)
{
std::cout << ss[i].name << " " << ss[i].score << std::endl;
}
}

partition

服务于快速排序法的分区

 #include <iostream>
#include <algorithm>
#include <vector> template <class T>
struct show
{
public:
void operator()(T &t)
{
std::cout << t << " ";
}
}; bool isok(int num)
{
return num == ;
} void main()
{
std::vector<int>myv; for (int i = ; i < ; i++)
{
myv.push_back(i);
} for_each(myv.begin(), myv.end(), show<int>());
std::cout << std::endl; partition(myv.begin(), myv.end(), isok); for_each(myv.begin(), myv.end(), show<int>());
std::cout << std::endl;
}

prev_permutation

排序

 #include <iostream>
#include <algorithm> void main()
{
int a[] = { ,,, }; do
{
std::cout << a[] << " " << a[] << " " << a[] << " " << a[] << std::endl;
} while (std::prev_permutation(a, a + ));
}

random_shuffle

随机排序

 #include <iostream>
#include <algorithm>
#include <vector> template <class T>
struct show
{
public:
void operator()(T &t)
{
std::cout << t << " ";
}
}; void main()
{
std::vector<int>myv; for (int i = ; i < ; i++)
{
myv.push_back(i);
} for_each(myv.begin(), myv.end(), show<int>());
std::cout << std::endl; random_shuffle(myv.begin(), myv.end());//随机排序 for_each(myv.begin(), myv.end(), show<int>());
std::cout << std::endl; random_shuffle(myv.begin(), myv.end());//随机排序 for_each(myv.begin(), myv.end(), show<int>());
std::cout << std::endl;
}

rotate

旋转

 #include <iostream>
#include <algorithm>
#include <vector> template <class T>
struct show
{
public:
void operator()(T &t)
{
std::cout << t << " ";
}
}; bool isok(int num)
{
return num == ;
} void main()
{
std::vector<int>myv; for (int i = ; i < ; i++)
{
myv.push_back(i);
} for_each(myv.begin(), myv.end(), show<int>());
std::cout << std::endl; rotate(myv.begin(), myv.begin() + , myv.end()); for_each(myv.begin(), myv.end(), show<int>());
std::cout << std::endl; rotate(myv.begin(), myv.begin() + , myv.end()); for_each(myv.begin(), myv.end(), show<int>());
std::cout << std::endl;
}

#include <algorithm>的更多相关文章

  1. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  2. Entity Framework 6 Recipes 2nd Edition(13-9)译 -> 避免Include

    问题 你想不用Include()方法,立即加载一下相关的集合,并想通过EF的CodeFirst方式实现. 解决方案 假设你有一个如Figure 13-14所示的模型: Figure 13-14. A ...

  3. error RC1015: cannot open include file 'afxres.h' 解决办法

    在为WindowsPhone8程序添加本地化的过程中遇到这个问题: 问题原因就是afxres.h文件缺失,下载它,放到VS安装目录下的VS\include目录下就可以了(选择目录的时候注意对应对版本) ...

  4. Mybatis常用总结:参数,返回,执行sql,include等

    1.参数注入1.1用#{0},#{1}的形式,0代表第一个参数,1代表第二个参数 public List<RecordVo> queryList(String workerId, Inte ...

  5. jsp中的@include与jsp:include区别详解

    1 前言 搞java开发的人也许都知道在jsp中引入项目中其他文件有如下两种方式 <%@include file="xxx.jsp"%> <jsp:include ...

  6. JSP中编译指令include与动作指令include的区别

    include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改, 否则视为已被修改.由于被包含的文件是在编译时才插入的,因此如 ...

  7. C/C++ 中的include

    当需要使用已有的方法或库时, 可以将它们的头文件#include进来. #include会在preprocess过程中被替换成它包含的代码. 头文件中包含了需要使用的函数/变量的声明. 当然声明与定义 ...

  8. 织梦多语言站点,{dede:include filename=''/}引入问题

    织梦模板include插入非模板目录文件出现"无法在这个位置找到"错误的解决办法 以下是dede V55_UTF8 查dede include标签手册 (3) include 引入 ...

  9. PHP 站点相对包含,路径的问题解决方法(include,require)

    以前看了,很多框架,基本上很少使用相对路径包含.而一般很多做php web站点,喜欢用相对路径. 认为这样,无论目录放到那里. 只要跟另外目录关系一致.那么就不会出现问题.如果一个站点,一般都认为,如 ...

  10. 如何让include标签包裹的布局置于屏幕最下方?

    如何让一个Layout 始终在屏幕的下方 我想让<include layout="@layout/bottom" />一直在屏幕下,怎么做? 1.相对布局中用属性  a ...

随机推荐

  1. 在MySQL数据库建立多对多的数据表关系

    在数据库中,如果两个表的之间的关系为,多对多的关系,如:“学生表和课程表”,一个学生的可以选多门课,一门课也可以被多门学习选;根据数据库的设计原则,应当形成第三张关联表 步骤1:创建三张数据表Stud ...

  2. jquery.post方法回调函数

    1 function(data){} 此post请求成功后调用之,data是请求成功后服务器返回的东西.如果在servlet中有response.getWriter().println("s ...

  3. java中读取程序运行时间

    第一种是以毫秒为单位计算的. Java代码 //伪代码 long startTime=System.currentTimeMillis();   //获取开始时间 doSomeThing();  // ...

  4. U-boot中实现Yaffs2+HwEcc

    经过老手的指点,要实现Yaffs2+HwEcc,重点在于chip->ops.mode由MTD_OOB_RAW到MTD_OOB_AUTO.经过几天的筹备,今天要对其下手了.为了真实展现分析移植过程 ...

  5. nginx安装编译详解

    ./configure --prefix --with解释 http://zhidao.baidu.com/link?url=pksp8xh2OVbRS8_wUMv4ILpb7P6VVIU-NQVp6 ...

  6. 查询SQL中某表里有多少列包含某字段

    select c.name from SYSCOLUMNS as c left join SYSOBJECTS as t on c.id=t.id where c.name like '这里是某个字段 ...

  7. Sizzle一步步实现所有功能(层级选择)

    第二步:实现Sizzle("el,el,el..."),Sizzle("el > el"),Sizzle("el el"),Sizzl ...

  8. Login failed for user 'NT AUTHORITY\NETWORK SERVICE'的解决方法

    1.打开SQL Server Manegement Studio 2.在 Security - logins 中  NETWORK SERVICE 3.双击该用户 Server Roles 中 勾选 ...

  9. CSS display属性的值及作用

    display 的属性值有:none|inline|block|inline-block|list-item|run-in|table|inline-table|table-row-group|tab ...

  10. Ubuntu下使用Vi时方向键变乱码 退格键不能使用的解决方法

    要在Ubuntu下编辑一些文件,这就涉及到了vi这个编辑器了.在Ubuntu下,初始使用vi的时候有点问题,就是在编辑模式下使用方向键的时候,并不会使光标移动,而是在命令行中出现[A [B [C [D ...