您的位置:首页 > 编程语言 > C语言/C++

[C++]Algorithm中的函数简介

2017-03-19 22:12 381 查看

Algorithm

algorithm意为”算法”,是C++的标准模版库(STL)中最重要的头文件之一,提供了大量基于迭代器的非成员模版函数。

内容

本文简单介绍find,swap,sort,for_each这几个函数的功能及使用方法。

函数原型及用例

给定一个vector容器:
vector<int> nums={8,7,5,4,2,9,6,1,3,0};


find:
find(nums.begin(),nums.end(),4);


find the number 4 ,return the iterator of the number。

返回第一次出现4的位置的迭代器(可以理解为指针,但不同。)

想要得到4所在位置的下标,可以写作

find(nums.begin(),nums.end(),4)-nums.begin();


注:若未找到则返回nums.end()

swap:
swap(nums[0],nums[2]);


交换nums中下标为0和下标为2的元素。

sort:
sort(nums.begin(),nums.end(),[](int n1,int n2){return n1<n2;});


对nums进行从小到大排序

排序规则参照第三个参数,使其nums中所有元素满足函数return true;

即里面任意两个元素n1,n2且n1下标小于n2,满足n1

sort(nums.begin(),nums.end(),[](int n1,int n2){return n1>n2;});


注:前两个参数为需要排序的范围。排序法为快速排序。如需要稳定排序则可以使用stable_sort代替即可。

for_each:
for_each(nums.begin(),nums.end(),[](int n){cout<<n<<" ";});


此函数可以对参数1到参数2范围内的元素执行参数3函数内容。

以上语句可以把nums内所有元素执行cout并输出一个空格。

用例

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
vector<int> nums={8,7,5,4,2,9,6,1,3,0};
cout<<find(nums.begin(),nums.end(),4)-nums.begin()<<endl;//find the number 4 return the iterator of the number
swap(nums[0],nums[2]);
for_each(nums.begin(),nums.end(),[](int n){cout<<n<<" ";});
cout<<endl;
sort(nums.begin(),nums.end(),[](int n1,int n2){return n1>n2;});
for_each(nums.begin(),nums.end(),[](int n){cout<<n<<" ";});
return 0;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++